在解除模态视图时尝试更新父视图控制器上的UILabel

The*_*eTC 3 iphone uiview modalviewcontroller

我试图在某人在模态视图中进行更改后更新父视图中的UILabel.因此,在他们单击"保存"后...新输入的值将更改父视图控制器上显示的文本.

但是,我似乎无法让UILabel刷新新输入的值.

关于我可以尝试的任何想法?我已经尝试了一些东西,但由于视图已经加载,没有任何东西得到"刷新".

谢谢!

ant*_*ntf 8

有很多方法可以做到这一点.一种方法是使用NSNotificationCenter能够在不同类之间进行调用.因此,在父视图中,您将拥有一个负责更新的函数(让我们称之为updateLabel),您将执行以下操作:

- (void) updateLabel
{
    yourLabel.text = @"what you need";
}

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateLabel) name:@"DoUpdateLabel" object:nil];
}
Run Code Online (Sandbox Code Playgroud)

现在在其他视图中,只需在保存按钮中发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"DoUpdateLabel" object:nil userInfo:nil];
Run Code Online (Sandbox Code Playgroud)

编辑: 我必须在这里提到两件事:

  1. 在这种情况下,最好使用共享数据模态保存数据,以便在程序的任何视图中访问此数据.换句话说,将数据与类分开是一种很好的做法.
  2. 请记住NSNotificationCenter通过添加来重新调整您在主视图中使用的内容[[NSNotificationCenter defaultCenter] removeObserver:self];