重新加载相同的View Controller但具有不同的信息

时间:2017-11-04 01:55:36

标签: ios swift null segue viewcontroller

我有一个详细信息视图控制器,我想显示相同的详细信息视图控制器,但有一个不同的项目。

var nexttype : Type!
let nexttypeVC = TypeDetailVC()


@IBAction func buttonTapped(_ sender: UITapGestureRecognizer) {

    nexttype = type.Array![0]
    nexttypeVC.type = next.type

    self.navigationController?.pushViewController(nexttypeVC, animated: true)


}

当我打印项目的名称或标识符时,我得到了正确的名称,但是当我启动模拟器时,我收到错误。标签和一切的值都是零。

如何告诉视图控制器重新加载但是使用不同的项?

2 个答案:

答案 0 :(得分:0)

调用performSegue(withIdentifier :)而不是pushViewController。您需要以编程方式注册segue或通过故事板添加一个。然后使用prepare(for segue:sender :)为目标ViewController提供你想要的项目。请注意,在 prepareForSegue之后,目标的viewDidLoad()被称为

这是Apple推荐的标准方法,可以在目标ViewController加载之前为其提供所需的数据。

答案 1 :(得分:-4)

而不是将相同的视图控制器推送到导航堆栈。尝试安排将UI元素更新为方法的所有逻辑。在viewDidLoad()中调用此方法。致电self.viewDidLoad()并不是一个好主意。

使用观察者模式并调用更新UI元素的方法。