我有一個可可框架的架構問題。在NSViewController和NSTableViewDelegate之間共享方法
所以事情是,在我的應用我有一個馬西德威包含2子視圖:
- RecentFilesTableView包含最近使用的用戶文件。用戶將通過雙擊選擇文件。
- OtherFileView用'打開另一個文件'調用NSOpenPanel。
這兩種觀點都將在年底方法調用:openFileWithUrl(網址:NSURL)
所以,問題是:什麼是最好的(最蘋果)進行存檔呢?
解決方案1
我把方法openFileWithUrl(網址:NSURL)在MasterViewConroller
我RecentFilesTableDelegate將參考MasterViewConroller,將調用該方法。
我把控制器放在OtherFileView在MasterViewConroller。
缺點:引用地獄(這個類引用這個,引用這個等等..)。
解決方案2
我會用MasterViewConroller作爲一個真正主控制器,將在「近期的表」既雙擊作出反應,並點擊「打開另一個文件」按鈕。
我將不得不從RecentFilesTableView得到選定的文件。我沒有看到這樣做的方法(ofc。我可以將tableView.dataSource()投射到我的類,但我相信乾淨的設計不涉及這樣的投射)。
缺點:一個班級統治他們。
解決方案3
正如我不能創建一個超兩個RecentTableDelegate和MasterViewController我可以用斯威夫特擴展到開放方法添加到他們。但那不是很OOP。
那麼蘋果世界做這種事情的模式是什麼?
請不要濫用標籤。這個問題沒有任何關係與Swift,Objective-C,當然不是iOS。 – nhgrif
您是否考慮過綁定或第一響應者? – Willeke