1

4 つのナビゲーション ボタンを持つコンテナがあり、それぞれが 4 つの個別の子 VC を表しています。コンテナーから子 vc に移動するコードを正常に実装しましたが、addchildviewcontroller戻る方法がわかりません。

コンテナー VC: 4 つの個別の子ビュー コントローラーに移動する 4 つのボタン。

ボタンをクリックすると、現在のビューが子 VC のビューに置き換えられます。したがって、ボタンは表示されなくなります。まさにこの理由から、子 VC には、4 つのボタンがあるコンテナー VC に戻るように特別に設計されたホーム ボタンがあります。

1 of 4 ボタンの例 子 VC を表示する関数を呼び出す:

- (IBAction)btn_bus:(id)sender {   
   [self addMyController:businessVC_];
}

子ビュー コントローラーの追加、ボタンがクリックされたときに呼び出される関数:

-(void)addMyController:(UIViewController *)myController{
    [self addChildViewController:myController];
    [self.view addSubview:myController.view]; 
    [myController didMoveToParentViewController:self]; 

}

質問 1:子 VC で機能をトラップ/実行する方法を教えてください。たとえば、子 VC のホーム ボタンを使用して子 VC を削除し、コンテナ/ナビゲーション画面を再度表示するにはどうすればよいですか?

質問 2:これらの手順は、カスタム コンテナー VC または子 VC のどこで実行されますか?

質問 3:特に、IBAction と IBOutlet の関係が親子関係でどのように管理されるかを示すガイドまたはチュートリアルはありますか?

4

2 に答える 2

3

アニメーションが不要な場合は、次のように戻ります。コードは親ビュー コントローラーにあります。

-(void)removeChild:(UIViewController *) child {
    [child didMoveToParentViewController:nil];
    [child.view removeFromSuperview];
    [child removeFromParentViewController];
}

子コントローラーでは、次のように呼び出します。

-(IBAction) goBackToContainer {
    [(ParentClassNameHere *)self.parentViewController removeChild:self];
}

一般に、子の追加と削除は、カスタム コンテナー コントローラーから行う必要があります。3番目の質問の意味がわかりません。IBActions とアウトレットは、UI 項目を含むコントローラーのビューに属します。あなたの全体的なデザインは、Apple がコンテナー コントローラーを行う方法とは異なります。ナビゲーションやタブ バー コントローラーなどのコンテナーには、ナビゲーションやタブ バー ビュー以外に戻るビューがありません。chid ビューの 1 つが常に画面に表示されます。この場合、カスタム コントローラーを使用する理由がわかりません。その設計はタブ バー コントローラーに非常によく似ているためです。

于 2013-01-16T17:24:10.743 に答える
2

前の回答には少し間違いがあり、コメントを残すのに十分な評判がありません。最初の行は次のようになります。

[child willMoveToParentViewController:nil];

これは、削除されていることを子供に伝えます。

Apple ドキュメントで、Creating Custom Container View Controllers を探します。

また、UIViewController.h には非常に優れたドキュメントがあります。

于 2013-01-19T17:48:25.560 に答える