从不同视图通过按钮更新标签

时间:2012-06-29 07:34:29

标签: ios sdk uibutton uilabel ios4

如果标签在uiview控制器的不同类别中按钮点击更新标签...当点击按钮时,标签应该更新...我尝试了很多次..但它没有发生.. < / p>

还有一个问题是我的应用程序在模拟器中运行良好但是当我在设备上运行时,动态创建的按钮(按钮图像)不可见,动作正在执行但图像丢失..我知道为什么?

2 个答案:

答案 0 :(得分:7)

在iOS中,有几种方法可以维护视图(实际上是视图控制器)之间的通信。对我来说最容易发送通知。您在要进行更改的视图中添加通知的观察者,并从触发更改的视图中发布通知。这样你就可以从ViewController B告诉ViewController A “有些东西准备好了,做出改变”

当然,这需要创建接收者视图并且已经在监听通知。

在ViewController B(发件人)

- (void)yourButtonAction:(id)sender
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"theChange" object:nil];
}

在ViewController A(接收器)中 添加观察者以收听通知:

- (void)viewDidLoad
{
    //.........
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(makeTheChange) name:@"theChange" object:nil];
}

不要忘记删除它(在这种情况下,在dealloc上)

- (void)dealloc
{
     [[NSNotificationCenter defaultCenter] removeObserver:self name:@"theChange" object:nil];
     [super dealloc];
}

最后,将更新标签的方法

- (void)makeTheChange
{
    yourLabel.text = @"your new text";
}

答案 1 :(得分:0)

不确定它是否是一个好的解决方案,但是您可以在单击按钮时将文本存储在全局NSString中,然后在加载第二个视图时将该字符串放入标签中。