1

ストーリーボード セグエを介してポップオーバー ビューを開くマスター/詳細ビューがあります。正常に動作するマスター ビュー コントローラーのナビゲーション バーに追加ボタンがあります。

編集モードで表のセルを選択すると、同じポップオーバーが呼び出される編集モードを追加しました。[self performSegueWithIdentifier:@"addQuery" sender:self]; から失敗します。声明。ポップオーバーの viewDidLoad が呼び出されますが、その後例外がスローされます。

私はpresentPopoverFromBarButtonItemを呼び出していません-それはperformSegueWithIdentifierから来ているようです。

マスター ビュー コントローラーにウィンドウがあることは間違いありません。そのビューのテーブル セルをクリックして、失敗しているプロセス全体を開始しました。

ポップオーバーは、問題の一部である可能性があるナビゲーション コントローラー シーケンスの始まりです。ボタンによって実際に呼び出されると、すべてが正常に機能しますが、プログラムで呼び出しようとすると失敗します。

performSegueWithIdentifier の「送信者」を無駄に変更しようとしました。

この問題は、セグエがボタンによって呼び出されないことに関係していると思われますが、それを偽造する方法がわかりません。

何か案は?

4

2 に答える 2

1

ipadpopoversegueの動作にはいくつかのバグがあるようです-WayneHartmanのブログ投稿を参照してください

簡単なテストで、viewWillAppearがviewDidLoadの後に呼び出されていることがわかりました。

私は問題を理解していると思います...まだ解決策を見つけていません。

メソッドが呼び出された順序は...

  1. [セグエを開始]
  2. viewDidLoad
  3. prepareForSegue
  4. viewWillAppear

初期化コードをviewWillAppearメソッドに移動しました-そしてそれは機能しました。

一般に、とにかくviewDidLoadではなくviewWillAppear内で初期化することをお勧めします。

于 2012-05-08T00:55:51.103 に答える
0

私は同様の問題を抱えています:

UIDocumentInteractionControllerを使用して、Kaynoteアプリでkaynoteドキュメントを開きます。私は同じコードを使用していました:

[docController presentOpenInMenuFromBarButtonItem:_actionBarButtonItem animated:YES];

上記のコードは、ファイルを開くために使用するアプリのオプションを使用して、actiobBarButtonItemからポップオーバーを開いていました。DetailViewControllerから同じことをすると、このスレッドの作成者と同じエラーメッセージが表示されます:「ウィンドウのないビューからポップオーバーを表示することはできません」

そして、私は自分の問題の迅速な解決策を見つけることができました。それがあなたに関係があるかどうかはわかりません。「presentOpenInMenuFromBarButtonItem」を使用する代わりに、「presentOpenInMenuFromRect」を使用しました。ポップオーバーが表示される適切な場所を定義する必要があります

于 2012-06-24T13:28:57.640 に答える