如何在iPhone中从子视图更新superview UILabel文本?

时间:2013-05-16 06:15:01

标签: iphone ios objective-c uilabel

我有两个课程, Client_Main Client_demo
Client_Main 类中,我使用的是显示客户端名称的标签,点击 Client_Main 类中的按钮后,我添加了 Client_demo < / strong>类作为子视图。现在当我点击 Client_demo 类上的按钮时,我想更改 Client_Main 类标签的文本。

所以请建议我如何做到这一点。

2 个答案:

答案 0 :(得分:0)

在superview

中为UILabel添加唯一标记

[superview subviews];返回超视图中的所有视图对象,然后从中获取具有您设置的唯一标记的视图对象,即

 for (UILabel *label in [yourSubview.superview]) {
        if (label.tag==uniqueID) {
            //Here is your uilabel instance ,do what you want
        }
    }

正确方法:代表团

只需在superview上创建一个带有实现的委托方法,即可使用其实例更改标签。 从子视图类

触发委托方法

more on delegation

答案 1 :(得分:0)

有两种方法可以从子视图更新superview    1-Via NSNotification    在这个approch你必须在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路是正确授权