我有一个UITableView
单元格,里面有几个UITextField
个。当用户单击其中一个textField时,会出现带有一些信息的弹出窗口。首先,他们必须在textField或popover之外单击以清除弹出窗口,然后单击下一个textField。因此,我将单元格的contentView
添加到弹出控制器的passThroughViews
属性中,这样他们就可以随意点击该单元格中的不同textFields,而无需先关闭弹出控制器。但是,它保持原始弹出窗口打开(哪个)很好,然后打开另一个相同的弹出窗口。
在发送命令打开另一个命令之前,有没有办法告诉popover是否已打开?我想不出怎么检测到这个?
答案 0 :(得分:2)
如果每个单元格控制弹出窗口的逻辑,则需要向自定义单元格说明实现UIPopoverControllerDelegate
协议,将弹出窗口的委托设置为self
(单元格)并覆盖{{ 1}}如下:
popoverControllerDidDismissPopover
如果您还想要,也可以删除第- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
[self.pop dismissPopoverAnimated:YES]; // hide the popover
self.pop = nil; // release the popover, this forces to create a fresh popover each time
}
行,但请记得在self.pop = nil;
中将其发布(我想您使用dealloc
时未使用ARC代码)。由于 bbum 建议您不要使用retainCount
来检查对象是否存在。
此外,如果您想查看弹出框是否已经可见,则每个retainCount
实例都有一个名为UIPopoverController
的属性。
答案 1 :(得分:0)
我将视图控制器设为UIPopoverControllerDelegate
。
然后我创建了一个名为BOOL
的{{1}}。
当我创建我的popover时,我将myPopoverControllerOpen
设置为yes。使用委托方法BOOL
,然后我将popoverDidDismissPopover
设置回BOOL
。
然后在呈现弹出窗口之前检查此NO
的状态。