Передать переменные в родительский вид? - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть UITableViewController, который выдвигает UIViewController, и мне нужно передать две NSDates и BOOL из этого дочернего контроллера представления обратно в контроллер табличного представления.

Как я могу это сделать?Дайте мне знать, если я не совсем уверен, или вам нужно больше объяснений.

Буду признателен за любую помощь, спасибо.

1 Ответ

1 голос
/ 24 февраля 2012

Использование делегата - это правильный способ передачи информации от одного контроллера к другому.

Как правило, вы хотите объявить протокол в заголовке 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;
...

Это скорее стиль личных предпочтений.

Я, вероятно, испортил код (и забыл несколько битов), потому что я пишу это на макушке, но этого должно быть достаточно, чтобы вы начали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...