5

我有一个UIPopoverController包含一个UITableView. 弹出框在其视图控制器的-viewDidAppear函数中调整大小以适应表格的内容。虽然弹出框正确调整大小,但其箭头通常不再指向原始CGRect. 有没有办法强制弹出框在调整大小后重新定位,使其箭头指向其预期目标?

编辑:我无法设置弹出框的大小,-viewDidLoad因为在调用表视图之前不会加载其数据-viewDidAppear,因此在此之前我不知道弹出框的大小。此外,当单击一个表格视图单元格以显示另一个视图时,我会调整弹出框的大小,这也导致箭头不再指向其预期目标。

4

2 回答 2

6

我认为这可能是错误的方法,因为您必须重新执行定位箭头开始的内置行为。

我不会在viewDidAppear. 我contentSizeForViewInPopover在视图控制器的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 回答