我有两个类,Client_Main和Client_demo。
在Client_Main类中,我使用显示客户端名称的标签,单击 Client_Main 类中的按钮后,我将Client_demo类添加为子视图。现在,当我单击Client_demo类上的按钮时,我想更改Client_Main类标签的文本。
所以请建议我如何做到这一点。
我有两个类,Client_Main和Client_demo。
在Client_Main类中,我使用显示客户端名称的标签,单击 Client_Main 类中的按钮后,我将Client_demo类添加为子视图。现在,当我单击Client_demo类上的按钮时,我想更改Client_Main类标签的文本。
所以请建议我如何做到这一点。
UILabel
为in superview放置一个唯一标签
[superview subviews];
返回超级视图中的所有视图对象,并从中获取具有您设置的唯一标签的视图对象,仅此而已
for (UILabel *label in [yourSubview.superview]) {
if (label.tag==uniqueID) {
//Here is your uilabel instance ,do what you want
}
}
或者
正确的方法:委托
只需在超级视图上创建一个具有实现的委托方法,即可使用其实例更改标签。从子视图类触发委托方法
有两种方法可以从子视图 1-通过 NSNotification 在此方法中更新超级视图,您必须在超级视图 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-方式是适当的委派