2012-01-14 92 views
0

我有主視圖與鏈接到不同的viewcontrollers。我的一個視圖有一些表單域,當它們更新成功時,它會調用UIAlertView來通知用戶。當用戶解散它時,alertView:clickedButtonAtIndex:被調用,而我的dismissModalViewControllerAnimated:回到我的主視圖。alertView dismissModalViewControllerAnimated

我遇到的問題是當我這樣做時,它不會調用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 2012-01-14 03:57:16

+0

謝謝大家!我正在考慮重置函數的相同情況,所以現在它由 - (void)viewWillAppear:(BOOL)控制,並且每次都按照您的說法調用它。有一個控制面板視圖和一個窗體視圖,所以self.myController重置不適合在這裏。 – Harpua 2012-01-14 04:46:52

1

viewWillAppearviewDidAppear將在視圖控制器變得可見時被調用。您可以檢查您的數據是否已在這些功能中更新並相應地更新您的視圖。

相關問題