如何解雇现有的popover并在ipad中一键式显示另一个popover

时间:2010-08-25 09:18:10

标签: iphone ipad

我有一个包含大量单元格的UItableView。每个细胞都与不同类型的popovers相关联。当我触摸一个单元格时,将显示一个弹出窗口。当我触摸tableview的另一个单元格时,我想要关闭现有的popover,并且我将显示与所选单元格相对应的popover。

但是,当我触摸弹出窗口外的区域时,现有的弹出窗口被解除但我无法检索我选择的单元格索引。有没有办法解雇现有的popover并在ipad中一次性显示另一个popover?

2 个答案:

答案 0 :(得分:4)

解决了问题

我通过将popover的passthroughView设置为我想要显示popover的tableview来获得解决方案。

答案 1 :(得分:0)

我遇到了类似的问题,但我无法使用passthroughView,因为我希望我的新popover可以使用旧的popover。所以我使用了setContentViewController方法。

我有一个SplitViewController,它在popoverController中显示SettingsViewController,当用户点击SettingsViewController中的按钮时,它可以在同一个popover中显示LoginViewController。

此方法位于SplitViewController:

- (void)showLoginViewController
{
  if ( ! _myPopoverController.isPopoverVisible) {
    _myPopoverController = [[UIPopoverController alloc] initWithContentViewController:self.loginViewController];
    [_myPopoverController presentPopoverFromRect:popoverOriginRect inView:self.view permittedArrowDirections:0 animated:YES];
  }
  else {
    [_myPopoverController setContentViewController:self.loginViewController animated:YES];
  }
}

我在SplitViewController中有一个属性:

@property (nonatomic, strong) UIPopoverController *myPopoverController;

必须不创建_myPopoverController的新实例,而是在旧实例中设置ContentViewController。将PopoverController存储在强属性中是一种很好的做法,因为在可见时不能释放它。