0

メイン ビューとモーダル ビュー コントローラーの間の中間メニューとしてポップオーバーを使用しようとしています。次のコードを使用して、ポップオーバーからモーダル ビュー コントローラーを正常に表示できます。

UIStoryboard *storyboardiPad = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
cbwEditControlPanel *editCP = [storyboardiPad instantiateViewControllerWithIdentifier:@"EditCP"];

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:editCP];
[nav setToolbarHidden:NO];
[nav setModalPresentationStyle:UIModalPresentationFullScreen];
[nav setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentViewController:nav animated:YES completion:nil];
self.modalInPopover = NO;

私が直面している問題は、EditCP モーダル ビュー コントローラーが閉じられると、メイン ビュー コントローラーが更新されないことです。EditCPモーダルビューコントローラーで設定されたページ数を反映するように更新する必要があるメインビューにページコントローラーがありますが、何らかの理由で、ポップオーバーからモーダルビューコントローラーが呼び出されると、メインビューコントローラーがページコントローラーを更新できなくなります。メイン ビューが閉じられたときに、ポップオーバーまたはモーダル ビューからメイン ビューの「View Will Appear」メソッドを呼び出してみましたが、「viewWillAppear」メソッドが呼び出されても、pageController は更新されません。

pageController の更新を妨げているアイデアはありますか? モーダル ビューに pageController への参照を渡して更新しようとしたところ、ポップオーバーが表示されてから閉じられるまで、PageController のページ数を更新できないようです。

ありがとうございました!

4

2 に答える 2

1

これは古い質問ですが、最近、ポップオーバーを使用しているときに同様の問題に遭遇しました。私の解決策は、巻き戻しセグエを使用して、親ビューをトリガーして何らかのアクションを実行することでした。私の場合、親ビューには連絡先情報が含まれており、ポップオーバーには引用のリストが含まれています。私がやりたかったのは、ユーザーがポップオーバーから新しい都市を選択したら、親ビューを新しい都市で更新することだけでした。したがって、親ビューでは、次のように巻き戻し関数を作成します。

.h で:

- (IBAction)unwindToContactTVC:(UIStoryboardSegue *)unwindSegue;

.m で:

- (IBAction)unwindToContactTVC:(UIStoryboardSegue *)unwindSegue
{
    [self updateTableForOffice];
}

上記の .m ファイルでは、親ビューで実行したいことを実行するためのロジックがある場所です。このアンワインド セグエを接続するには、ストーリーボードの子ビューに移動し、ビュー アイコンから終了アイコンまでドラッグを制御します。アンワインド セグエの名前がポップアップ表示されます。

最後に、アンワインド セグエに名前を付けてから、viewWillDisappear() 関数の子コントローラーで次のようにセグエを呼び出します。

- (void)viewWillDisappear:(BOOL)animated
{
    [self performSegueWithIdentifier:@"unwind-to-contact-tvc" sender:self];
}

それが役立つことを願っています。誰かがより良い解決策を持っている場合は、私に知らせてください。

于 2015-01-15T08:56:57.597 に答える
-1

さて、私は問題を半分解決しました。ポップオーバーが消えたときに更新機能を取得する唯一の方法は、ストーリーボードの使用を停止し、メイン ビューをデリゲートとして使用してプログラムでポップオーバーを表示することでした。その後、popoverControllerDidDismissPopover メソッド内で正しく更新できました。

ただし、ポップオーバーが閉じられる前に、モーダルが閉じられたときに pageControl を更新する方法を見つけることにまだ興味があります。

于 2012-11-05T22:02:25.750 に答える