[英]UIPopoverController on UITableViewCell
我有一個UITableView
單元格,里面有幾個UITextField
。 當用戶單擊其中一個textField時,會出現帶有一些信息的彈出窗口。 首先,他們必須在textField或popover之外單擊以清除彈出窗口,然后單擊下一個textField。 因此,我將單元格的contentView
添加到彈出控制器的passThroughViews
屬性中,這樣他們就可以隨意點擊該單元格中的不同textFields,而不passThroughViews
關閉彈出控制器。 但是,它保持原始彈出窗口打開(哪個)很好,然后打開另一個相同的彈出窗口。
在發送命令打開另一個命令之前,有沒有辦法告訴popover是否已打開? 我想不出怎么檢測到這個?
如果每個單元格控制彈出窗口的邏輯,則需要對自定義單元格說實現UIPopoverControllerDelegate
協議,將彈出窗口的委托設置為self
(單元格)並覆蓋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
釋放它(我想你使用的是retainCount
因為你沒有使用ARC代碼)。 正如bbum建議你不應該使用retainCount
來檢查對象的存在。
此外,如果要查看彈出窗口是否已經可見,則每個UIPopoverController
實例都有一個名為popoverVisible
的屬性。
好的,我做到了。 對於那些發現這個問題的人。 除了其他答案之外,我就是這樣做的。
我讓我的視圖控制器成為UIPopoverControllerDelegate
。
然后我創建了一個名為myPopoverControllerOpen
的BOOL
。
當我創建我的popover時,我將BOOL
設置為yes。 使用委托方法popoverDidDismissPopover
然后我將BOOL
設置回NO
。
然后我在呈現彈出窗口之前檢查此BOOL
的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.