0

テーブルビューを持つ別のビュー(コントローラー(名前:Child.m))を追加する UIViewController を拡張するコントローラー(名前:Parent.m)があります。

Child.m のテーブルの行の 1 つをクリックすると、Parent.m クラスのメソッドを呼び出します。Parent.m の新しいインスタンスを作成したくありません。

誰かが私がこれを達成する方法を説明できますか. 両者の間でプロトコルを定義する必要がありますか? もしそうなら、誰かが私にその方法を説明できますか.

4

1 に答える 1

4

UINavigationController を使用している場合は、子ビュー コントローラーで次のような操作を行うことで、親ビュー コントローラーを取得できます。

ParentViewcontroller * parentView = (ParentViewcontroller *)[self.navigationController.viewControllers lastObject]; 

UINavigationController を使用していない場合は、通知を使用できます (やり過ぎかもしれません)。または、親から子へのキー値観察 (つまり、子ビュー コントローラーの変更に基づいて何かの表示または値を変更する)。

または、ここで行う最も簡単な方法は、親を子のデリゲート ターゲットに設定することです。

1 )

ChildViewcontroller.h ファイルで、次のようなプロトコルを作成します。

@protocol ChildViewDelegate

- (void) doSomethingWith: (NSString *) thisString;

@end

2)

ChildViewcontroller にデリゲート プロパティを作成します (これを親ビューに設定します)。

3)

ParentViewcontroller.h ファイルで、@interface宣言<ChildViewDelegate>の後に " " を追加しますUIViewController...つまり

@interface ParentViewController : UIViewController <ChildViewDelegate>

4)

doSomethingWith:" " メソッドを実装します。

5)

また、親から子ビューコントローラーをインスタンス化/作成するときは、デリゲートを親に設定することを忘れないでください。

6)

最後に、子から親にメッセージを送信する場合は、次のように簡単にできます。

[delegate doSomewthingWith: thisString];
于 2012-06-05T02:26:51.757 に答える