2012-01-14 5 views
0

У меня есть основной вид со ссылками на разные viewcontrollers. В одном из моих представлений есть некоторые поля формы, когда они обновляются успешно, он вызывает UIAlertView, чтобы уведомить пользователя. Когда пользователь отклоняет его, вызывается alertView:clickedButtonAtIndex: и I dismissModalViewControllerAnimated: обратно к моему основному виду.alertView rejectModalViewControllerAnimated

Проблема у меня есть, когда я делаю это, он не вызывает метод viewDidLoad. У меня есть переменные, которые нужно обновить, может кто-нибудь сказать мне, что называется. Я не могу найти ничего, чтобы я мог делать обновления.

ответ

0

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

@interface MyController 
- (void)reset; 
@end 

@implementation MyController 
- (void)reset{ 
    //set some defaults 
} 
- (void)viewDidLoad{ 
    [self reset]; 
} 
- (void)viewWillAppear{ //<--If you want to reset your values every time the view is about to appear 
    [self reset]; 
} 
- (void)viewDidDisappear{ //<--If you want to reset your values every time the view is either dismissed, covered, or hidden 
    [self reset]; 
} 
@end 

Затем в alertView:clickedButtonAtIndex:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 

    if (buttonIndex==0) { //whatever your situation is 
     //dismissModalViewControllerAnimated: 
     [self.myController reset]; 
    } 
} 

Некоторые дополнительные чтения: UIViewController.

+0

'viewDidLoad' будет вызываться один раз после загрузки представления, что может быть несколько раз в течение срока службы контроллера. – tia

+0

Спасибо всем! Я думал о том же, что и в функции сброса, поэтому теперь он управляется анимацией вида (void) viewWillAppear: (BOOL) и вызывается каждый раз, как вы все заявляли. Существует представление панели управления и вид формы, поэтому Сброс self.myController здесь не подходил. – Harpua

1

viewWillAppear и viewDidAppear будет вызываться, когда контроллер вида станет видимым. Вы можете проверить, были ли ваши данные обновлены в этих функциях и соответственно обновили ваш просмотр.

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