Я думаю, что вы как-то упустили один из основных пунктов паттерна делегата, который заключается в разъединении ваших объектов. Лучший способ объявить этого делегата:
#import <UIKit/UIKit.h>
@protocol DepartmentViewControllerDelegate; // forward declaration of protocol
@interface DepartmentViewController : UITableViewController
@property (nonatomic, weak) id <DepartmentViewControllerDelegate> delegate;
@end
@protocol DepartmentViewControllerDelegate
- (void)departmentViewController:(DepartmentViewController *)controller
isProcessingPeople:(NSArray *)people
@end
В вашем контроллере представления отдела вы должны написать что-то вроде этого:
if ([self.delegate respondsToSelector:@selector(departmentViewController:isProcessingPeople:)]) {
[self.delegate departmentViewController:self isProcessingPeople:people];
}
А в контроллере вида планирования вы бы реализовали этот метод:
- (void)departmentViewController:(DepartmentViewController *)controller
isProcessingPeople:(NSArray *)people {
// do necessary work here
}
Пример, приведенный здесь, является просто примером одного сообщения, которое вы можете отправить делегату. Вы можете добавить все, что вам нужно, но это делает так, чтобы между контроллерами не было связи. Контроллер вида планирования знает все, что ему нужно о контролере отдела, но контролеру отдела не нужно ничего знать о контролере планирования.
Если вы хотите придерживаться того, что у вас есть в данный момент, просто признайте, что это на самом деле не шаблон делегата, и вам, вероятно, следует переименовать ваше свойство.