我是Mac开发的新手,我知道如何在iOS应用程序开发中使用协议,我也了解它们是如何工作的。
现在我有一个小项目,它有一个NSSplitViewController和两个NSSplitViewItems,并且与NSViewController、ProjectsVC和TasksVC有关系。我使用Xcode 6和故事板。

在ProjectsVC中,我有这样的协议
@protocol ProjectsVCDelegate <NSObject>
- (void)didSelectedProject:(JTProject*)project;
@end问题是,如何让ProjectsVC实例在TasksVC中设置委托?
发布于 2014-11-04 16:40:39
当你思考这样的问题时,想想如何保持事物的解耦。一种方法是让您的拆分视图控制器管理关系。就像您的ProjectsVC充当JTProject的委托一样,您的拆分视图控制器可以充当项目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];
}https://stackoverflow.com/questions/26739848
复制相似问题