Ho un UICollectionView
e quando l'utente preme una cella, presento un altro controller di visualizzazione in uno UINavigationController
modally utilizzando uno storyboard.follow.destinationViewController è nullo quando si presenta UINavigationController modal
- (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];
}
Ora, il mio problema è che i rendimenti segue.desinationViewController
nil
(come commentare nel frammento di codice dice).
Solo per il debug, ho modificato il UINavigationController
in un altro controller di visualizzazione e non ho avuto alcun problema. Non so se passare da modale a push come lo stile di transizione sarà d'aiuto dato che è impossibile spingere un UINavigationController
(si verifica un arresto anomalo che dice che è così).
Ho pulito il progetto e la cartella di generazione e ho riavviato il mio computer (e quindi Xcode).
Questo è quello che sembra quando si esegue l'applicazione:
Durante la ricerca di problemi simili non ho trovato nulla su questo. La maggior parte delle altre domande riguardava le proprietà impostate sul controller della vista di destinazione come zero (come this).
Uso Xcode 5.1.1 e iOS 7.0 come destinazione di sviluppo.
Edit1
Lo stesso problema si verifica in tutte le parti della mia app ora (ovunque un UINavigationController
è già presentata modale). Tuttavia,, succede solo in alcune occasioni, ma ogni volta segue.destinationViewController
è ancora nil
.
Edit2
ho sostituito il codice prepareForSegue
con questo (farlo manualmente):
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];
E questo funziona. Quindi penso che il problema risieda nello storyboard in qualche modo.
ho controllato il mio codice e usavo ** ** segue. Grazie per la risposta però – user3956212