Использование делегата - это правильный способ передачи информации от одного контроллера к другому.
Как правило, вы хотите объявить протокол в заголовке UITableViewController
, реализовать его, а затем инициировать UIViewController
с делегатом.
В двух словах, ваш UITableViewController .h
файл должен иметь что-то вроде этого:
@protocol setDateDelegate <NSObject>
@required
- (void) setDateOne:(NSDate *)one dateTwo:(NSDate *)two;
@end
Затем вы должны реализовать вышеупомянутый класс, делая все, что вы хотите сделать с датами в файле UITableViewController .m
.
В вашем UIViewController
вы можете (альтернатива в конце) определить собственный метод инициализации:
Сначала определите свойство делегата в вашем .h и свой собственный метод init, а затем внедрите его в свой .m примерно так:
- (id)initWithDelegate:(NSObject *)myDelegate
{
self = [super init];
if (self) {
self.delegate = myDelegate;
}
return self;
}
Далее, когда вам нужно передать даты вашему UITableViewController
, просто используйте
[self.delegate setDateOne:one dateTwo:two];
Есть и другие способы сделать это, в том числе пропустить пользовательский метод init и просто установить делегата после создания UIViewController
:
MyUIViewController *viewController = [[[MyUIViewController alloc] init] autorelease];
viewController.delegate = self;
...
Это скорее стиль личных предпочтений.
Я, вероятно, испортил код (и забыл несколько битов), потому что я пишу это на макушке, но этого должно быть достаточно, чтобы вы начали.