Ich habe eine Sammlung in ViewControllerA, die ich didSelectItemAtIndexPath
verwenden, um zu ViewControllerB
zu übergehen. Sobald ich in ViewControllerB
bin, habe ich eine andere Sammlungsansicht, die ich auf die gleiche Weise wie ViewControllerA
verwenden möchte, um ViewControllerB
mit dem neuen Eingang neu zu laden. Ich stelle mir vor, dass diese Frage sehr einfach ist, aber ich bin neu und habe viel zu lange damit verbracht, es herauszufinden.Reload same ViewController, als ob es mit segue aufgerufen wurde
ViewControllerA's
didSelectItemAtIndexPath
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let hero: Hero!
hero = heroes[indexPath.row]
performSegueWithIdentifier("HeroDetailVC", sender: hero)
}
ViewControllerA's
prepare für Segue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "HeroDetailVC" {
if let detailsVC = segue.destinationViewController as? HeroDetailVC {
if let hero = sender as? Hero {
detailsVC.hero = hero
detailsVC.heroes = heroes
}
}
}
}
ich glaube, das Problem liegt in der Tatsache, dass in meinem viewDidLoad
von ViewControllerB
, das Objekt "Held" hat keinen Wert aus irgendeinem Grunde . Ich benötige einen Wert, um ein Label zu laden.
viewDidLoad() {
super.viewDidLoad()
nameLbl.text = hero.name
}
Wenn ich die Segue verwenden
if let hero = sender as? Hero {
detailsVC.hero = hero
detailsVC.heroes = heroes
}
scheint die notwendigen Informationen zu ViewControllerB
von ViewControllerA
zu bekommen, aber ich kann nicht herausfinden, warum die View-Controller-Spur des Wertes verliert oder hat plötzlich null, wenn Ich versuche, mich selbst zu segmentieren oder zu instantiieren.
ich diesen Fehler:
"fatal error: unexpectedly found nil while unwrapping an Optional value".
Im Erraten das Objekt Held nicht bestanden wird. Warum benutzt Xcode nicht den letzten bekannten Wert für den Helden, anstatt abzustürzen?
Ich habe sogar versucht, instantiate mit den folgenden
let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("heroDetailVC") as UIViewController
self.presentViewController(viewController, animated: false, completion: nil)
Aber wie Sie, weiß ich nicht sehen kann, wie mit dem Wert für Helden und Helden passieren.
hatte ich einen ähnlichen Fehler bei dem Übergang von ViewControllerA
Gebäuden -> B, aber ich war in der Lage, es zu beheben, indem Sie rechts die ViewControllerA
klicken und ein manuellen ausgelöst ViewControllerB
segue einrichten. Xcode erlaubt es mir nicht, per Drag & Drop ViewControllerB
mit sich selbst zu verbinden. Was mache ich?
Überprüfen Sie, ob Ihr Segment mit 'viewcontroller' oder mit Ihrem' collectionViewCell' in Ihrem Storyboard verbunden ist. –
Warum möchten Sie eine zweite Instanz von ViewControllerB, anstatt nur die zu aktualisieren, die Sie haben? –
@PhillipMills Nun, ehrlich gesagt brauche ich keine zweite Instanz von ViewControllerB, aber ich muss ALLE Informationen auf dem Bildschirm aktualisieren. Es gibt vier Sammlungsansichten und eine Beschriftung, die aktualisiert wird, wenn eine Zelle gedrückt wird. Gibt es eine Möglichkeit, die Informationen ohne eine zweite Instanz zu aktualisieren? – Apple