5

UIPopoverController含む がありUITableViewます。-viewDidAppearテーブルの内容に合わせて、ビュー コントローラの関数でポップオーバーのサイズが変更されます。ポップオーバーは適切にサイズ変更されますが、通常、その矢印は元の を指していませんCGRect。矢印が意図したターゲットを指すように、サイズ変更後にポップオーバーを強制的に再配置する方法はありますか?

編集:-viewDidLoadテーブルビューは呼び出されるまでデータをロードしないため、ポップオーバーのサイズを設定できません。その-viewDidAppear結果、それまでポップオーバーのサイズがわかりません。さらに、テーブル ビュー セルの 1 つをクリックして別のビューを表示すると、ポップオーバーのサイズを変更すると、矢印が意図したターゲットを指しなくなります。

4

2 に答える 2

6

最初に矢印を配置する組み込みの動作をやり直す必要があるため、これは間違った方法である可能性があると思います。

のポップオーバーコンテンツのサイズを変更しませんviewDidAppearcontentSizeForViewInPopoverビューコントローラのviewDidLoadメソッドでプロパティを設定します。例:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.contentSizeForViewInPopover = CGSizeMake(320, 155); // sized for a 3-row UITableView
}

(クイック警告:ユニバーサルアプリを開発している場合、このコードにより、3.1.x以下を実行しているデバイスでランタイムクラッシュが発生します。)

ポップオーバーコントローラーを提示する前に、コンテンツサイズを設定することもできます。これにより、問題が解決されます。popoverContentSizeプロパティをチェックしてください。

于 2010-09-08T19:38:21.487 に答える
3

この回答によると、ポップオーバーを再度呼び出すとpresentPopoverFromRect:inView:、矢印の位置が変更されます。私はこれを自分でテストしていません。

于 2010-09-15T06:39:25.180 に答える