4

UIModalPresentationPageSheet のボタンからポップオーバーを表示しようとしています。アプリがクラッシュし、次のメッセージがコンソールに返されます。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Popovers cannot be presented from a view which does not have a window.'

私のコードは、標準のビュー コントローラーで正常に動作します。メッセージが示唆するように、モーダルには表示を妨げる​​何かがあります。このトピックについてかなりの量の検索を行いましたが、解決策が見つかりません。1Password のようなアプリで非常によく似たものを見たことがあるので、それが可能であると信じなければなりません。

ポインタや提案をいただければ幸いです。

4

3 に答える 3

0

どの SDK を使用したかはわかりませんが、5.1 では例外は発生しません。テキスト フィールドからポップオーバーを表示していますが、次のコードが機能します。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {

[_popController presentPopoverFromRect:textField.frame
                                inView:textField.superview
              permittedArrowDirections:UIPopoverArrowDirectionAny
                              animated:YES];
return NO;

}

于 2012-07-22T10:17:02.567 に答える
0

問題は、inView パラメータのビューではなくビュー コントローラを渡していることだと思います。UIViewController の .window をフェッチしようとしていますが、UIViewControllers にはありませんが、UIViews にはあります。

于 2014-06-05T23:34:31.557 に答える
0

次のコードは私のために働いているようです、これを試してください:

[_pPopOverController presentPopoverFromRect:CGRectMake(0, 0, 768, 900) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];   
于 2010-11-04T07:28:29.397 に答える