从DetailViewController(swift)访问MasterViewController中的函数

时间:2014-11-22 19:28:35

标签: swift uiviewcontroller

我在MasterViewController中有一个函数

 func removeLocation(city: String){
        objects.removeObject(city)
        self.tableView.reloadData()
  }

在我的DetailViewController中,我检查城市是否有效,如果不是,我想从MasterViewController中的表中删除它。我将prepareForSegue()中的self从MasterView传递给DetailView,然后将其分配给

 var masterViewController: MasterViewController

但后来我得到一个错误,说它没有初始化,它希望我有这个初始化程序

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

当我运行它时会破坏我的整个程序并给我一个预期的致命错误。

我可以在没有初始化程序的DetailView中创建MasterView实例,还是从DetailView访问MasterView中的函数?

这是Swift btw,我找到了一些关于如何在C中解决它的建议,但我无法实现它们。

1 个答案:

答案 0 :(得分:0)

使用可选项。

var masterViewController: MasterViewController?

创建类时不必初始化选项。

prepareForSegue()中照常指定指针:

destinationViewController.masterViewController = self

然后当您需要致电removeLocation时:

masterViewController?.removeLocation("London")