簡體   English   中英

UITopViewConll上的UIPopoverController

[英]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

然后我創建了一個名為myPopoverControllerOpenBOOL

當我創建我的popover時,我將BOOL設置為yes。 使用委托方法popoverDidDismissPopover然后我將BOOL設置回NO

然后我在呈現彈出窗口之前檢查此BOOL的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM