私はdidSelectItemAtIndexPath
を使用してViewControllerB
になるViewControllerAのコレクションビューを持っています。一度私がViewControllerB
にいると、私はViewControllerB
を新しい入力で再ロードするためにViewControllerA
と同じ方法で使いたいと思う別のコレクションビューを持っています。私はこの質問が非常にシンプルだと思っていますが、私は新しく、それを理解しようとするのにずっと長い時間を費やしてきました。segueで呼び出されたのと同じViewController
ViewControllerA's
didSelectItemAtIndexPath
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let hero: Hero!
hero = heroes[indexPath.row]
performSegueWithIdentifier("HeroDetailVC", sender: hero)
}
ViewControllerA's
私は問題が私のviewDidLoad
ViewControllerB
の中で、オブジェクト「英雄」は、何らかの理由で値を持たないという事実にあると思いますセグエ
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
}
}
}
}
の準備。私はそれがラベルを読み込むための値を持つことを要求します。
viewDidLoad() {
super.viewDidLoad()
nameLbl.text = hero.name
}
私はセグエを使用する場合
if let hero = sender as? Hero {
detailsVC.hero = hero
detailsVC.heroes = heroes
}
がViewControllerA
からViewControllerB
に必要な情報を取得するようだが、ビューコントローラは、値のトラックを失ったか、突然ときはnilを持っている理由は、私が把握することはできません私は自分自身にセグエーティングを試みたり、自分自身をインスタンス化しようとします。
私はこのエラーを取得する:
"fatal error: unexpectedly found nil while unwrapping an Optional value".
イムは、オブジェクトのヒーローが渡されていない推測。なぜXcodeはクラッシュするのではなく、ヒーローのための最後の既知の値を使用しないのですか?
することは私も次
let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("heroDetailVC") as UIViewController
self.presentViewController(viewController, animated: false, completion: nil)
でインスタンス化を試みた。しかし、あなたが見ることができるように私はそれで英雄と英雄の値を渡す方法がわかりません。
ViewControllerA
からセグエを構築するとき、私は同様のエラーが発生しました - > Bしかし、私は右ViewControllerA
をクリックしてViewControllerB
にセグエにトリガマニュアルを設定することにより、それを修正することができました。 Xcodeをドラッグ&ドロップすると、ViewControllerB
と接続できません。私は何をしますか?
segueが 'viewcontroller'またはストーリーボードの' collectionViewCell'で接続されていることを確認しますか? –
なぜあなたはあなたが持っているものを更新するのではなく、ViewControllerBの2番目のインスタンスをしたいのですか? –
@PhillipMillsまあ正に、私はViewControllerBの2番目のインスタンスは必要ありませんが、私は画面上のすべての情報を更新する必要があります。コレクションのビューは4つあり、セルが押されたときに更新されるラベルがあります。 2番目のインスタンスを作成せずに情報を更新できる方法はありますか? – Apple