Скрытие кнопки в родительском представлении от модального вида? - PullRequest
0 голосов
/ 27 июня 2011

У меня есть родительское представление со скрытой кнопкой и метод, который показывает эту кнопку. Это родительское представление имеет модальное представление, в котором мне нужно вызвать метод, который скрывает кнопку.

ParentViewController.m

- (void)unhideButton {
    myButton.hidden = NO;
    NSLog(@"Unhide");
}

ModalViewController.m

- (void)levelComplete {
    ParentViewController *controller = [[ParentViewController] alloc] init];
    [controller unhideButton];
    [controller release];
}

Сообщение NSLog Unhide успешно отображается в консоли, но когда я отклоняю модальный контроллер вида, кнопка все еще скрыта. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Модальные контроллеры представления имеют автоматическую ссылку на контроллеры представления, представленные с использованием свойства parentViewController. Так что вы можете прямо сказать,

[self.parentViewController unhideButton];

в методе levelComplete.

Но создание нового экземпляра и вызов метода для него не повлияет на исходный экземпляр, как сказал Райан.

0 голосов
/ 27 июня 2011

Почему ModalViewController, который предположительно представлен экземпляром ParentViewController, создает экземпляр new ParentViewController?Я думаю, что вам нужно сделать, это передать ссылку на существующий ParentViewController в ModalViewController при его создании, а затем в ModalViewController он может установить скрытое свойство для родительской кнопки.

Если вы хотите следовать передовым методам проектирования, ParentViewController должен делегировать управление своей кнопкой ModalViewController.ParentViewController соответствовал бы простому протоколу, открывая кнопку, и устанавливал себя как делегат ModalViewController перед его представлением.

...