2014-11-22 35 views
0

我在MasterViewController從DetailViewController(SWIFT)在MasterViewController訪問功能

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

功能在我DetailViewController我檢查城市是否是有效的,如果它不是,我想從MasterViewController表中刪除。我通過從馬西德威prepareForSegue()自我的DetailView,我把它分配給

var masterViewController: MasterViewController 

但後來我得到一個錯誤說,它沒有被初始化,並希望我能有這個初始化

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

當我運行它時,會打破我的整個程序並給我一個預期的致命錯誤。

何我可以在沒有初始值設定項的情況下在DetailView中創建MasterView的實例,或者從DetailView中訪問MasterView中的函數?

這是Swift btw,我發現了一些關於如何在C中解決它的建議,但我無法實現它們。

回答

0

使用可選。

var masterViewController: MasterViewController? 

當創建類時,不需要對選項進行初始化。

prepareForSegue()分配指針像往常一樣:

destinationViewController.masterViewController = self 

然後,當你需要調用removeLocation

masterViewController?.removeLocation("London") 
+0

謝謝!但是現在我仍然必須從DetailView返回到MasterView,並且只有當城市被移除。從MasterView中的表中刪除條目後,是否有辦法自動重定向到MasterView? – romada 2014-11-22 19:39:19

+0

我沒跟着你。你能否描述一下你想從用戶的角度來看這將會如何工作? – vacawama 2014-11-22 19:43:32

+0

好吧,你有表格的位置,如「倫敦」,「波士頓」等。然後你點擊它們,它會顯示一個detailViewController與我從服務器獲得的城市細節。在顯示細節之前,我會檢查城市是否存在。如果沒有,我會發送警報通知說沒有找到該城市。我按確定,我想再次看到表格單元格。但是現在當我按OK的時候,我看到空的detailViewController與非現有的城市,我不得不回到masterView。它確實從tableView中刪除了城市,但問題又回來了。 – romada 2014-11-22 19:46:58

相關問題