2013-10-24 2 views
0

я отдельный класс "CoordinationController.h" он содержит некоторые протоколыObjective-C Отдельный класс для делегатов

Пример:

@protocol CoordinationControllerDelegate <NSObject> 

- (void)startScrollingUpToXPosition:(NSInteger)xPosition scrollingUpToYPosition:(NSInteger)yPosition; 

@end 

, но я не выполнила ни «CoordinationController.m " файл. но этот протокол реализован во всем классе viewController, за исключением моего класса «ControllerManager.m».

и у меня есть один класс «ControllerManager.h». здесь у меня есть список объектов контроллера в NSArray.

ControllerManager.h

@interface THSControllerManager : NSObject 

{ 

    NSArray *_controllers; 
} 

@end 

ControllerManager.m 

@interface ControllerManager() 

@property (nonatomic, retain) NSArray *controllers; 

@end 

@implementation ControllerManager 

@synthesize controller = _controllers; 


- (id)init 

{ 

    self = [super init]; 
    if(self) 
    { 
     self.controllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 
    } 

} 

@end 

теперь я должен вызвать протокол для всех реализованного контроллера. как я могу достичь.

Либо я должен создать объект своего класса CoordinationController в классе ControllerManager или любым другим способом, пожалуйста, предложите мне. и есть другой способ добиться такой же функциональности, прокомментируйте это.

ответ

0

У вас нет CoordinationController для создания экземпляра. У вас просто есть файл с некоторыми протоколами. Ваш лучший вариант, вероятно, заключается в том, чтобы использовать протокол для определения методов, которые должен проверять компилятор. Когда вы создаете/устанавливаете viewController1 и viewController2, они должны указать протокол как реализованный. Когда вы приступите к использованию экземпляров, вы должны использовать respondsToSelector:, чтобы убедиться, что необходимый метод действительно доступен.

Вы также можете использовать вместо этого conformsToProtocol:, но если вы собираетесь сделать чек, это может быть и для фактического метода, а не для самого протокола.

+0

wain, я реализовал протокол во всем классе контроллера. Я сделал еще один способ, который я создал в классе в методе в классе «CoordinationController». и я вызвал из «ControllerManager» с объектом «viewController» как параметр для вызова протокола. есть и другой способ сделать то же самое. – Nagarajan

+0

Я не совсем понимаю ваш комментарий. Можете ли вы показать код (в своем вопросе), где вы определяете эти вещи и как вы хотите вызвать этот метод? – Wain

+0

wain, я создал отдельный файл класса «CoordinatorController.h», там написан этот протокол. и у меня есть еще один файл класса «ControllerManager.h и .m», его содержащий список объектов viewController - NSArray. весь «viewController» реализовал этот протокол. теперь мой вопрос: я хочу вызвать этот метод протокола из «ControllerManager», используя объекты «viewController». каким образом я могу это достичь. 1. Мне нужно создать любой метод класса в «CoordinatorController» и вызвать этот метод в «ControllerManager» для вызова протокола через передачу объекта viewController. – Nagarajan

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