2014-11-04 161 views
1

我是新來的Mac OS X開發人員,我知道如何在iOS應用程序開發中使用協議,並且瞭解他們如何工作,現在我有一個小項目,該項目有它有兩個NSSplitViewItems並具有與NSViewControllers ProjectsVC和TasksVC關係,我使用的Xcode 6故事板的NSSplitViewController NSSplitViewController如何在由NSSplitViewController管理的兩個NSViewController之間實現委託協議

在ProjectsVC我有這個協議

@protocol ProjectsVCDelegate <NSObject> 

- (void)didSelectedProject:(JTProject*)project; 

@end 

的問題是,如何讓TasksVC中的ProjectsVC實例來設置d elegate到它?

回答

2

當你考慮這樣的問題時,請考慮如何使事物分離。一種方法是讓分割視圖控制器管理關係。就像您的ProjectsVC充當JTProject的委託一樣,您的Split View Controller可以充當Projects VC的委託。你可以調用一種讓SVC知道它可能關心的事情的方法,然後它可以做一些響應,比如在TasksVC上調用一個可以做某事的方法。

優點:ProjectsVC不知道任何有關TasksVC的信息,TasksVC不知道有關ProjectsVC的任何信息。它們由允許使用這些資源來完成更復雜的域任務的對象管理。

例(讓拆分視圖控制器實現ProjectVCDelegate和ProjectsVC具有指派屬性projectVCDelegateForward的拆分視圖控制器本身分配。

// ProjectsVC 
-(void)didSelectedProject:(JTProject*)project { 
    [self.projectCVDelegateForward didSelectedProject: project]; 
} 


// Split View Controller 
-(void)didSelectedProject:(JTProject*)project { 
    [self.tasksVC doSomethingRelatedToSelectedProject: project]; 
} 
+0

(你可以打電話讓「SVC」知道的東西)什麼是方法SVC?並且您能給出一個代碼示例嗎? – Imodeveloper 2014-11-04 17:40:19

+0

分割視圖控制器 – KirkSpaziani 2014-11-04 17:47:51