2014-07-15 3 views
2

1) У меня есть два контроллера, fistViewController, secondViewController.Могу ли я вызвать метод делегата после popViewcontroller?

2) Первый контроллер реализует делегат, который говорит «xyzDelegate».

@interface FirstViewController : UIViewController <xyzDelegate> 

3) Метод делегата в контроллере первого вида обновляет UIViewTable.

4) Первый контроллер: нажатие второго контроллера просмотра.

SecondviewController *svc = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 
svc.delegate = self; 

[self.navigationController pushViewController:svc animated:YES]; 

4) Во втором View Controller:

id<xyzDelegate> strongDelegate = self.delegate; 

[self.navigationController popViewControllerAnimated:YES]; 
NSLog (@"After popViewControler"); 

[strongDelegate dateSelected:dateChoosen]; // Invoking Delegate Method. 

Вопрос:

1) Является ли это общая практика, чтобы вызвать метод делегата после Popping View Controller? , поскольку я обновляю UITable, как только метод делегата вызывается в контроллере FirstView.

+0

Почему нет, когда выбрана дата? Или просто обновите таблицу, когда первый контроллер просмотра 'viewWillAppear:'? – Wain

ответ

1

Обычно контроллер вида является независимым блоком экранов. Особенно, если он переключается навигационным контроллером. Ожидается, что вы перенастройте представления, чтобы привязать свои данные в одном из переопределений метода viewWillAppear: или viewDidAppear:.

Обычно viewDidAppear: является предпочтительным. Поскольку во многих случаях переключение представления требует перезагрузки базовых данных, и это обычно вызывает асинхронный ввод-вывод. В этом случае этот асинхронный ввод-вывод может вмешиваться одновременно, выполняя анимацию переключения отображения.

В любом случае, если ваша работа по настройке зрения является легкой, лучше всего пойти с viewWillAppear:, потому что это заставит вашего пользователя ждать меньше.

В этом случае, IMO, кажется, ваш лучший выбор - это просто отметить, чтобы обновить данные на контроллере целевого представления и обработать обновление в методе viewDidAppear: контроллера вида.

+0

Спасибо, отлично !!. :) – Whoami

2

Вы должны назвать методы делегата ДО Выполнение операции POP.

[strongDelegate dateSelected:dateChoosen]; 

popViewControllerAnimated Позвоню второй вид метода контроллер dealloc уничтожить, где бы вы отпустите strongDelegate. Таким образом, нет более сильногоDelegate для получения метода DateSelected:.

[self.navigationController popViewControllerAnimated:YES]; 
+0

спасибо Vijay. Информативный. – Whoami

+0

Добро пожаловать :) –

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