重新加载相同的ViewController,就像使用segue

时间:2016-08-07 11:33:49

标签: ios swift uiviewcontroller interface-builder

我在ViewControllerA中有一个集合视图,我使用didSelectItemAtIndexPath来转换为ViewControllerB。在我ViewControllerB之后,我有另一个集合视图,我希望以与ViewControllerA相同的方式使用新输入重新加载ViewControllerB。我想这个问题非常简单,但我很新,并且花了很长时间试图解决这个问题。

ViewControllerA's didSelectItemAtIndexPath

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    let hero: Hero!
    hero = heroes[indexPath.row]
    performSegueWithIdentifier("HeroDetailVC", sender: hero)
}

ViewControllerA's为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
            }
        }
    }
}

我认为问题在于viewDidLoad ViewControllerB viewDidLoad() { super.viewDidLoad() nameLbl.text = hero.name } 中的对象"英雄"由于某种原因没有价值。我要求它有一个值来加载标签。

if let hero = sender as? Hero {
    detailsVC.hero = hero
    detailsVC.heroes = heroes
}

当我使用segue

ViewControllerB

似乎从ViewControllerAlet viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("heroDetailVC") as UIViewController self.presentViewController(viewController, animated: false, completion: nil) 获取了必要的信息,但是我无法弄清楚为什么视图控制器会失去对值的跟踪,或者在我尝试自我调整时忽略nil实例化。

我收到此错误:

  

"致命错误:在打开一个可选值"时意外地发现了nil。

我猜测对象英雄没有被传递。为什么Xcode不使用英雄的最后一个已知值而不是崩溃?

我甚至尝试使用以下

进行实例化
ViewControllerA

但正如你所看到的,我不知道如何为英雄和英雄传递价值。

ViewControllerA - >构建segue时遇到类似的错误B但我能够通过右键单击ViewControllerB并将手动触发的segue设置为ViewControllerB来修复它。 Xcode不允许我拖放以将 gridCalculator : function(req,res){ // calculation logic var options=[]; options.dateFirstLicensed = req.param('DateFirstLicensed'); options.dateFirstInsured = req.param('DateFirstInsured'); options.claimList = req.param('ClaimList'); options.suspenList = req.param('SuspenList'); ...etc 连接到自身。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。

let doesntMatter = self.storyboard?.instantiateViewControllerWithIdentifier("heroDetailVC") as! HeroDetailVC
    doesntMatter.hero = heroesInSynergy[indexPath.row]
    doesntMatter.heroes = heroes
    self.presentViewController(doesntMatter, animated: true, completion: nil)

由于某种原因,我在实例化视图之前没有工作。我想我发现的代码很旧或者其他东西。

我只有以下1个问题。在多次实例化时,这会导致内存问题吗?