0

いくつかのサブビューから選択するために使用されるメインビューを持つポップオーバーがあり、ユーザーがポップオーバーの外側をタップしてウィンドウを閉じたときに、ポップオーバーをメインビューにリセットしたいと思います。

たとえば、メインのポップオーバービューには、[オプション]、[カテゴリ]、[ワードリスト]、および[結果]があります。次回ユーザーがポップオーバーを呼び出したときに、最後にポップオーバーを閉じたときのビューに戻るのではなく、メインビューに戻るようにしたいと思います。

深さが1レベルしかない場合は、

- (void)viewWillDisappear:(BOOL)animated {
    [[self navigationController] popToRootViewControllerAnimated:YES];
    [super viewWillDisappear:animated];
}

しかし、階層の奥深くにいる場合、たとえばWordList:Category:Wordsビューが消えたら、次のレベルに移動したいので、WordListまたはCategoryのルートにポップできません。上記のコードを使用すると、レベルを下げることができません。ルートビューに移動します。

私が欲しいのは、ポップオーバービューが閉じられたときにそのルートにポップするように指示できるようにすることです。このようなもの:

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
    [[self popover] popToRootViewControllerAnimated:YES];
    [self.popoverController dismissPopoverAnimated:YES];

}

何かご意見は?

4

2 に答える 2

0

ポップオーバーを初期化するとき、私はそれがすでに存在するかどうかを確認するためにテストします。もしそうなら、私は初期化をスキップして、ポップオーバーに直接行きます。そのため、ポップオーバーが閉じられると、ユーザーがポップオーバーを残したビューにとどまります。

最初のビューから開始するには、ポップオーバーをnilに設定する必要があります。

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popOverController {

    [self.popoverController dismissPopoverAnimated:YES];
    self.popoverController = nil;

これで、ユーザーがポップオーバーを呼び出すと、メインメニューから始まる新しいビューのセットが作成されます。

于 2012-07-20T16:08:16.137 に答える
0

必要なのはUIPopoverControllerのcontentViewControllerプロパティであると思います。これは、ポップオーバーを初期化したビューコントローラー(おそらくそのナビゲーションコントローラー)になります。これ...

[self.popover.contentViewController popToRootViewControllerAnimated:YES];

...あなたのためにトリックを行う必要があります。

于 2012-07-20T00:22:06.603 に答える