0

Client_MainClient_demoの 2 つのクラスがあります。
Client_Mainクラスでは、クライアント名を示すラベルを使用しており、 Client_Mainクラスのボタンをクリックした後、Client_demoクラスをサブビューとして追加しました。Client_demoクラスのボタンをクリックすると、 Client_Mainクラス ラベル のテキストを変更したいと思います。

だから、これを行う方法を教えてください。

4

2 に答える 2

0

UILabelスーパービューに固有のタグを付ける

[superview subviews];スーパービュー内のすべてのビュー オブジェクトを返し、そこから、設定した一意のタグを持つオブジェクトを取得します。

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

また

適切な方法:委任

スーパービューに実装されたデリゲートメソッドを作成して、そのインスタンスを使用してラベルを変更するだけです。サブビュー クラスからデリゲート メソッドを起動する

委任の詳細

于 2013-05-16T06:17:24.647 に答える
0

サブビュー 1 からスーパービューを更新するには 2 つの方法があります。このアプローチでは 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" 

双方向は適切な委任です

于 2013-05-16T07:23:21.837 に答える