1

当它们都在不同类别的uiview控制器中时,如何通过按钮单击更新标签...单击按钮时,标签应该更新...我尝试了很多次..但它没有发生..

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

4

2 回答 2

7

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

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

在 ViewController B 中(发送者)

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

在 ViewController A (receiver) 中添加观察者来监听通知:

- (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";
}
于 2012-06-29T08:46:07.660 回答
0

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

于 2012-06-29T07:51:33.730 回答