如何从 iPhone 中的子视图更新超级视图 UILabel 文本?
Posted
技术标签:
【中文标题】如何从 iPhone 中的子视图更新超级视图 UILabel 文本?【英文标题】:How to update superview UILabel text from subview in iPhone? 【发布时间】:2013-05-16 06:15:01 【问题描述】:我有两个类,Client_Main 和 Client_demo。 在 Client_Main 类中,我使用了一个显示 client name 的标签,单击 Client_Main 类中的按钮后,我添加了 Client_demo 类作为 子视图。现在,当我单击 Client_demo 类上的按钮时,我想更改 Client_Main 类标签的文本。
所以请建议我如何做到这一点。
【问题讨论】:
看这里roostersoftstudios.com/2011/04/12/… 你应该通过响应者链向你的视图控制器发送一个动作消息。然后,您的视图控制器应根据您的操作消息配置您的视图。 【参考方案1】:在superview中为UILabel
添加一个唯一标签
[superview subviews];
返回父视图中的所有视图对象,并从中获取具有您设置的唯一标签的视图对象,就是这样
for (UILabel *label in [yourSubview.superview])
if (label.tag==uniqueID)
//Here is your uilabel instance ,do what you want
或
正确的方式:委托
只需在超级视图上创建一个具有实现的委托方法,以使用其实例更改标签。 从子视图类中触发委托方法
more on delegation
【讨论】:
【参考方案2】:有两种方法可以从子视图更新超级视图 1-通过 NSNotification 在这种方法中,您必须在 superview calass 中创建通知并像这样设置观察者
//you can write this code in viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationEventForUpdateData:) name:@"NotificationForUpdateHomeScreenData" object:nil];
and define this method notificationEventForUpdateData in same superview class in this method you can update label textfield etc whatever you want
-(void) notificationEventForUpdateData: (NSNotification *)notification
self.label.text=@"newvalue";
从子视图中,您必须从要更新的操作(内部方法)发布此通知,例如按钮单击或表格视图的单元格选择等 像这样
[[NSNotificationCenter defaultCenter]
postNotificationName:@"NotificationForUpdateHomeScreenData"
2-方式是正确的委托
【讨论】:
以上是关于如何从 iPhone 中的子视图更新超级视图 UILabel 文本?的主要内容,如果未能解决你的问题,请参考以下文章