我有一个拆分视图控制器。一切都正常加载,除非你是纵向并旋转到横向,否则单元格电流将被取消选择。
我发现了问题。每次调用viewWillAppear
函数时,该表都在重新加载数据,每次旋转设备时都会调用viewWillAppear
。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
table.reloadData()
}
现在出现了一个新问题。每当我从模态视图添加项目时,我都需要更新TableView
。
模态视图是另一个视图控制器。我试过了:
MasterViewContoller().table.reloadData()
这引发了一堆旗帜,我很确定这不是正确的做法。那么如何从另一个视图重新加载表呢?
==============
对于那些认为ViewWillAppear
未在轮换时调用的人,请尝试此操作并查看:
class MasterViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
println("rotated")
}
}
class DetailedViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
答案 0 :(得分:0)
问题的标准解决方案是使用委托。
protocol ModalViewControllerDelegate {
func updateInModalViewController(sender: ModalViewController)
}
class MainViewController: UIViewController, ModalViewControllerDelegate {
func prepareForSegue(_ segue: UIStoryboardSegue, sender sender: AnyObject?) {
if let controller = segue.destinationViewController as? ModalViewController {
controller.delegate = self
}
}
// the rest should be pretty obvious
}