我有一个MeterTableviewController连接到具有两个设置的两个tableview控制器。第一个位置LocationListSegue从MeterTableviewController上的按钮直接连接到LocationListTableViewController。从MeterTableViewController的顶部连接到另一个Seeter MetersListSegue MeterListTableviewviewController。
当我按下位置按钮时,LocationListTableViewController被加载两次。 我以为是因为我两次调用它:一次是通过按钮IBAction,另一次是通过Prepare,所以我评论了Prepare的代码,但仍然加载了两次。
但是MeterListTableViewController仅加载一次。
我不知道为什么按下按钮两次会加载控制器。有人可以告诉我吗?
@IBAction func chooseLocation(_ sender: Any) {
self.performSegue(withIdentifier: "LocationListSegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
/*
if segue.identifier == "LocationListSegue"{
let viewController:LocationListTableViewController = segue.destination as! LocationListTableViewController
}
*/
if segue.identifier == "MetersListSegue"{
let viewController2:MeterListTableViewController = segue.destination as! MeterListTableViewController
}
}
答案 0 :(得分:1)
您已经从按钮中添加了segue以及segue动作,请删除其中之一
答案 1 :(得分:0)
删除故事板segue,并使用我的代码更改代码。这对您来说足够了。
@IBAction func chooseLocation(_ sender: Any) {
let tableViewController = self.storyboard?.instantiateViewController(withIdentifier: "your identifier") as! MeterListTableViewController
self.navigationController?.pushViewController(tableViewController, animated: true)
}
如果要使用segue,请为UIButton删除IBAction并编写此代码。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "LocationListSegue"{
let viewController:LocationListTableViewController = segue.destination as! LocationListTableViewController
} else if segue.identifier == "MetersListSegue"{
let viewController2:MeterListTableViewController = segue.destination as! MeterListTableViewController
}
}