0

テーブルを表示するプログラムを作成します。

人々が検索をクリックすると、元のビューをカバーする別のビューが追加されます。元のビューは [BNUtilitiesQuick listnewcontroller] です。

[[BNUtilitiesQuick window] addSubview:[BNUtilitiesQuick searchController].view];

[[BNUtilitiesQuick searchController] viewWillAppear:YES]と呼ばれるのは確かです。したがって、UIViewにはコントローラーへのポインターがあるようです

ただし、[[BNUtilitiesQuick listnewcontroller] viewWillDisappear]は呼び出されないという見解

さらに、[[BNUtilitiesQuick listnewcontroller] viewWillAppear]ユーザーが次のコードで検索語の変更を終了した場合でも、 は呼び出されません。

[self.view removeFromSuperview];

ここで何かが欠けているのではないかと思います。IO が searchController.view が listNewController をカバーすることを認識できるように、とにかく正確に何をすべきですか?

4

3 に答える 3

1

これは正しい方法ではありません。searchController がフル スクリーン コントローラーの場合は、presentViewController を使用してモーダルに表示するか、@StuR が提案したようにナビゲーション スタックにプッシュする必要があります。

検索ビューが listnewcontroller の一部のみをカバーする場合は、iOS5 で包含 API を使用する必要があります。

listnewcontroller (親ビュー コントローラー) 内で次のように記述します。

[self addChildViewController:self.searchController];
[self.view addSubview:self.searchController.view];
[self.searchController didMoveToParentViewController:self];

詳細については、WWDC 2011 セッション ビデオ「Implementing UIViewController Containment」をご覧ください。iOS6 ではいくつかの変更と非推奨があるため、2012 年の「iOS のビュー コントローラーの進化」もご覧ください。

于 2012-06-26T09:55:05.760 に答える
0

viewWillDisappear と viewWillAppear は、指定された viewController をポップまたはプッシュした場合にのみ呼び出されます。現在のviewControllerの内側(上部)に独自のviewControllerを持つサブビューを簡単に追加できます。StuR が言ったように、現在の ViewController を閉じたい場合は、次を使用する必要があります。

BNUtilitiesQuick *searchController = [BNUtilitiesQuick alloc] init]; [self.navigationController pushViewController:searchController アニメーション:YES];

ViewController について詳しくは、http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457 をご覧ください

于 2012-06-26T09:59:08.927 に答える
0
ViewController *viewController = [[ViewController alloc] init];    
[self.navigationController pushViewController:viewController animated:YES];

全画面表示を追加するには、pushViewController を使用することを検討します。addSubview は、画面全体をカバーしないビュー用です。

于 2012-06-26T09:43:01.993 に答える