2016-08-07 64 views
0

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'sdidSelectItemAtIndexPath

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?

+0

Überprüfen Sie, ob Ihr Segment mit 'viewcontroller' oder mit Ihrem' collectionViewCell' in Ihrem Storyboard verbunden ist. –

+1

Warum möchten Sie eine zweite Instanz von ViewControllerB, anstatt nur die zu aktualisieren, die Sie haben? –

+0

@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

Antwort

0

Ich habe die Antwort auf meine Frage gefunden.

Aus irgendeinem Grund, als ich versucht, instantiate Ansicht, bevor es nicht funktioniert. Ich denke, der Code, den ich gefunden habe, war alt oder so.

Ich habe nur 1 folgende Frage. Wird dies zu Speicherproblemen mit allen Ansichten führen, die bei mehrfacher Instanziierung erstellt werden?