0

我有一個uiviewcontroller在NSUserDefault中保存了一些NSString。當我回到這樣如何在[self dismissModalViewControllerAnimated:YES]之後上傳uiviewcontroller;

-(IBAction)goBack:(id)sender{ 
    [self dismissModalViewControllerAnimated:YES]; 
    [self viewWillAppear:YES]; 
} 

另一個UIViewController中有使用該NSString的保存在NSUserDefault。 在viewWillApper中加載這個nsstring。當我第一次啓動應用程序時,它會正確加載數據,如果我從另一個視圖轉回來不行。我能做什麼?

回答

0

將關注默認值的視圖控制器註冊爲NSUserDefaultsDidChangeNotification的觀察者。當您收到通知時,從默認值中獲取該值並根據需要執行任何操作。

如果您只是簡單介紹一個模式化的視圖控制器,您可以在其中設置字符串,並且它是需要知道新值的父視圖控制器,那麼您可以在父視圖控制器上設置一個屬性並設置當你的模態視圖控制器被解僱。

我假設你在那裏的示例代碼是來自你的模態視圖控制器 - 這將不會影響呈現視圖控制器(你打電話給viewWillAppear在模態控制器上,因爲你正在解僱它,一個壞主意),viewWillAppear在視圖控制器關閉模態視圖控制器時不會調用它。

做我的第二個建議,在你的父視圖控制器的標題:

@property (nonatomic,copy) NSString *stringFromDefaults; 

在.m文件:

@synthesize stringFromDefaults; 

在你viewWillAppear中,您目前得到的值,分配在以物業代替:

self.stringFromDefaults = [[NSUserDefaults standardUserDefaults] stringForKey:@"stringValue"]; 

從您的模態視圖控制器:

-(IBAction)goBack:(id)sender 
{ 
    [(ParentViewController*)self.parentViewController setStringFromDefaults:newStringValue]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

其中newStringValue是您還保存在默認值中的更新字符串值。

+0

對不起,我是新的Objective-C,所以我正在學習..在哪種方式,我可以在父視圖控制器上的屬性,並設置爲我的模態視圖控制器被解僱? – JackTurky

+0

查看更新的答案 – jrturton

相關問題