从另一个ViewController更新Swift中的UITableView

时间:2014-11-08 00:22:29

标签: uitableview swift ios8

我有一个拆分视图控制器。一切都正常加载,除非你是纵向并旋转到横向,否则单元格电流将被取消选择。

我发现了问题。每次调用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.

}

1 个答案:

答案 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
}