2014-11-04 2 views
1

Я новичок в разработке Mac OS X, я знаю, как работать с протоколами в разработке приложений для iOS, и я понимаю, как они работают, теперь у меня есть небольшой проект, который имеет NSSplitViewController, который имеет два NSSplitViewItems и который имеет отношение с NSViewControllers ProjectsVC и TasksVC, я с помощью Xcode 6 с раскадровкой NSSplitViewControllerКак реализовать делегатский протокол между двумя NSViewControllers, которым управляет NSSplitViewController

в ProjectsVC у меня есть этот протокол

@protocol ProjectsVCDelegate <NSObject> 

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

@end 

вопрос в том, как получить экземпляр ProjectVC в TasksVC для установки d элегантно?

ответ

2

Когда вы думаете о таких проблемах, подумайте о том, как держать вещи развязанными. Одним из способов было бы, чтобы ваш контроллер Split View контролировал отношения. Подобно тому, как ваши проектыVC выступают в роли делегата для JTProject, ваш контроллер Split View может выступать в качестве делегата для ваших проектов VC. Вы можете вызвать метод, позволяющий SVC знать, что что-то произошло, что ему может быть нужно, а затем он может что-то сделать в ответ, например, вызвать метод на TasksVC, который будет что-то делать.

Преимущества: ProjectsVC ничего не знает о TasksVC, TasksVC ничего не знает о ProjectVC. Им управляет объект, которому разрешено использовать эти ресурсы для выполнения более сложных задач домена.

Пример (Позволить Split View Controller реализации ProjectVCDelegate и ProjectsVC имеющий правопреемником свойство projectVCDelegateForward, что Split View Controller назначает себя.

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


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

(Вы можете вызвать метод Позволить «SVC» знать что-то), что является SVC? И можете ли вы привести пример кода? – Imodeveloper

+0

Split View Controller – KirkSpaziani

Смежные вопросы