我有一個主界面控制器,它已經在界面生成器中設置爲通過連接到按鈕的彈出框來打開表視圖控制器。我希望能夠在didSelectRowAtIndexPath
中選中彈出式表格視圖中的項目時關閉彈出窗口。在Objective-c中,我只能將prepareForSegue delegate
中的segue改爲UIStoryboardPopoverSegue
,並將其UIPopoverController
傳遞給表視圖控制器。然而,在Swift中,我的downcast失敗了,因爲它將segue看作類型爲UIStorybaordPopoverPresentationSegue
(當調試器加入時),它看起來不是公共API。如何在Swift中關閉目標視圖控制器中的彈出框
這裏是我的代碼:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "ShowCollectionsSegue" {
if let collController:CollectionsTableViewController! = segue.destinationViewController as? CollectionsTableViewController {
if let popoverSegue = segue as? UIStoryboardPopoverSegue { // <-- This fails
collController.popover = popoverSegue.popoverController
}
}
}
}
如何要挾SEGUE到UIStoryboardPopoverSegue
才能訪問其popoverController
財產?
我打開解決popover響應表視圖單元格點擊不同方式的問題,但似乎從故事板使用segue時,解除popover的唯一方法是通過持有以某種方式將其添加到popover控制器的引用中,並且據我所知,唯一能做到這一點的方法是將segue轉換爲Swift不想讓我做的popover細節。有任何想法嗎?
感謝您的迴應。似乎用popoverController創建了一個有效的popover segue,但是,當我使用'self.popover!.dismissPopoverAnimated(true)'將其分配給我的目標視圖控制器的屬性後,它將忽略彈出窗口時,它無法解除它。 – 2014-09-10 18:21:45
我剛剛注意到的一些事情......如果您點擊「UIStoryboardPopoverSegue」,它會將您帶到Swift「標題」。在那裏看起來'UIStoryboardPopoverSegue'確實從'UIStoryboardSegue'繼承。 – 2014-09-10 18:49:36
好的,我可以通過在IB中將popover的類型設置爲「Deprecated Segues:Popover」來修復它。很抱歉,目前還沒有適用於自適應分段的解決方案 – Mundi 2014-09-10 20:20:56