我在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中解决它的建议,但我无法实现它们。
答案 0 :(得分:0)
使用可选项。
var masterViewController: MasterViewController?
创建类时不必初始化选项。
在prepareForSegue()
中照常指定指针:
destinationViewController.masterViewController = self
然后当您需要致电removeLocation
时:
masterViewController?.removeLocation("London")