Mam UICollectionView
i kiedy użytkownik naciśnie komórkę, prezentuję inny kontroler widoku w UINavigationController
modalnie za pomocą storyboard.segue.destinationViewController jest zerowy podczas prezentacji UINavigationController modalny
- (void)collectionView:(UICollectionView *)collectionView
didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"editBookIPad"
sender:indexPath];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue
sender:(id)sender
{
// Did not include code for other segues, but I check which is the current one properly
UINavigationController *dest = segue.destinationViewController; // This is nil!
dest.modalPresentationStyle = UIModalPresentationFormSheet;
DetailsViewController *detailsVC = (id)[dest topViewController];
detailsVC.stack = self.stack;
detailsVC.editingMode = 1;
detailsVC.bookToEdit = [self.fetchedResultsController objectAtIndexPath:sender];
[self.collectionView deselectItemAtIndexPath:sender
animated:YES];
}
Teraz moim problemem jest to, że segue.desinationViewController
powraca nil
(jako komentarz we fragmencie kodu mówi).
Tylko do debugowania, zmieniłem UINavigationController
na inny kontroler widoku i nie miałem problemu. Nie wiem, czy zmiana z modalnego na pchnięcie jako styl przejściowy pomoże, ponieważ niemożliwe jest wepchnięcie UINavigationController
(zdarza się awaria, która mówi, że tak jest).
Oczyściłem projekt i folder kompilacji i ponownie uruchomiłem komputer (a tym samym Xcode).
To jak to wygląda podczas uruchamiania aplikacji:
Przy poszukiwaniu podobnych problemów znalazłem nic na ten temat. Większość innych pytań dotyczyło ustawiania właściwości na docelowym kontrolerze widoku zerowym (takim jak this).
Używam Xcode 5.1.1 i mam iOS 7.0 jako cel programistyczny.
Edit1
Ten sam problem występuje we wszystkich częściach mojego app NOW (wszędzie UINavigationController
jest prezentowanych modally). Jednak, zdarza się to tylko przy niektórych okazjach, ale za każdym razem segue.destinationViewController
jest nadal nil
.
Edit2
Wymieniłem kod prepareForSegue
z tym (robi to ręcznie):
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard"
bundle:nil];
UINavigationController *navCon = [storyboard instantiateViewControllerWithIdentifier:@"AllBooksVCDetails"]; // The problematic navigation controller
navCon.modalPresentationStyle = UIModalPresentationFormSheet;
BKSBookDetailsViewController *detailsVC = (id)[navCon topViewController];
detailsVC.stack = self.stack;
detailsVC.editingMode = 1;
detailsVC.bookToEdit = [self.fetchedResultsController objectAtIndexPath:indexPath];
[self presentViewController:navCon
animated:YES
completion:nil];
[self.collectionView deselectItemAtIndexPath:indexPath
animated:YES];
I to działa. Więc myślę, że problem leży w scenorysie.
Sprawdziłem mój kod i używałem ** ** segue. Dziękuję za odpowiedź: – user3956212