重新加载相同的视图控制器但具有不同的信息
Reload same View Controller but with different information
我有一个 Detail View Controller,我想显示相同的 Detail View Controller 但具有不同的项目。
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)
}
当我打印项目的名称或标识符时,我得到了正确的,但是当我启动模拟器时,我得到了错误。标签的值和一切都是零。
如何告诉视图控制器重新加载不同的项目?
而不是将同一个视图控制器推送到导航堆栈。尝试将所有更新 UI 元素的逻辑安排到一个方法中。在 viewDidLoad()
中调用此方法。调用 self.viewDidLoad()
不是一个好主意。
使用观察者模式并调用更新UI个元素的方法。
调用 performSegue(withIdentifier:) 而不是 pushViewController。您需要以编程方式注册一个 segue 或通过故事板添加一个。然后使用 prepare(for segue: sender:) 给目的地 ViewController 你想要的项目。请注意,目的地的 viewDidLoad() 在 prepareForSegue 之后 被调用。
这是 Apple 推荐的标准方式,用于在加载目标 ViewController 之前为其提供所需的数据。
我有一个 Detail View Controller,我想显示相同的 Detail View Controller 但具有不同的项目。
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)
}
当我打印项目的名称或标识符时,我得到了正确的,但是当我启动模拟器时,我得到了错误。标签的值和一切都是零。
如何告诉视图控制器重新加载不同的项目?
而不是将同一个视图控制器推送到导航堆栈。尝试将所有更新 UI 元素的逻辑安排到一个方法中。在 viewDidLoad()
中调用此方法。调用 self.viewDidLoad()
不是一个好主意。
使用观察者模式并调用更新UI个元素的方法。
调用 performSegue(withIdentifier:) 而不是 pushViewController。您需要以编程方式注册一个 segue 或通过故事板添加一个。然后使用 prepare(for segue: sender:) 给目的地 ViewController 你想要的项目。请注意,目的地的 viewDidLoad() 在 prepareForSegue 之后 被调用。
这是 Apple 推荐的标准方式,用于在加载目标 ViewController 之前为其提供所需的数据。