从一个视图控制器转换到另一个 - UI更新

时间:2014-07-10 20:59:24

标签: ios objective-c viewwillappear viewdidappear

假设我有两个viewcontrollers A和B.从A到B,我在顶部添加了viewcontroller B.在弹出时,我在B中调用以下方法

 -(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSUserDefaults *userSettings = [NSUserDefaults standardUserDefaults];
    [userSettings setObject:firstName.text forKey:@"FN"];
    [userSettings setObject:lastName.text forKey:@"LN"];
    [userSettings synchronize];
 }

此userInfoUpdate方法更新应用程序的NSUserDefaults对象。  在返回viewcontroller A时,我在A:

中调用以下方法
- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  NSUserDefaults *userSettings = [NSUserDefaults standardUserDefaults];
  profileTextField.text = [NSString stringWithFormat:@"%@ %@",[userSettings objectForKey:@"FN"],[userSettings objectForKey:@"LN"]];
}

但是这不会更新textfiled字符串。知道我在这里做错了吗?还有更好的选择吗?

2 个答案:

答案 0 :(得分:1)

我建议创建一个充当数据模型的类,可以在2个控制器之间共享。这样您就不必担心Viewcontroller委托功能顺序。

@interface DataModel: NSObject
{
    NSString *firstName;
    NSString *lastName;
}

包含DataModel的对象:

@interface AVC:UIViewController
    @property (nonatomic, strong) DataModel *myDataModel

当A创建B并传递myDataModel以由B更新并将其保存在viewDidDissapear中时。

A现在可以在视图中恢复时更新,并且还可以在应用启动和升级中保存

答案 1 :(得分:0)

您不能调用[userSettings synchronize]来保存它们。