如何在按钮点击时更新标签,当它们都在uiview控制器的不同类中时......单击按钮时,标签应该更新...我尝试了很多次..但它没有发生..
还有一个问题是我的应用程序在模拟器中运行良好但是当我在设备上运行时,动态创建的按钮(按钮图像)不可见,动作正在执行但图像丢失..我知道为什么?
在iOS中,有几种方法可以维护视图(实际上是视图控制器)之间的通信 . 对我来说最容易发送通知 . 您在要进行更改的视图中添加通知的观察者,并从触发更改的视图中发布通知 . 这样你就可以从ViewController B告诉ViewController A "something is ready, make the change"
当然,这需要创建接收器视图并且已经在监听通知 .
在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 上)
dealloc
- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self name:@"theChange" object:nil]; [super dealloc]; }
最后,这个方法将更新您的标签
- (void)makeTheChange { yourLabel.text = @"your new text"; }
不确定它是否是一个好的解决方案,但您可以在单击按钮时将文本存储在全局NSString中,然后在加载第二个视图时将该字符串放入标签中 .
2 回答
在iOS中,有几种方法可以维护视图(实际上是视图控制器)之间的通信 . 对我来说最容易发送通知 . 您在要进行更改的视图中添加通知的观察者,并从触发更改的视图中发布通知 . 这样你就可以从ViewController B告诉ViewController A "something is ready, make the change"
当然,这需要创建接收器视图并且已经在监听通知 .
在ViewController B中(发送者)
在ViewController A(接收器)中添加观察者以侦听通知:
别忘了删除它(在这种情况下,在
dealloc
上)最后,这个方法将更新您的标签
不确定它是否是一个好的解决方案,但您可以在单击按钮时将文本存储在全局NSString中,然后在加载第二个视图时将该字符串放入标签中 .