[英]dismiss UIPopOverController from contentViewController
[英]Dismissing a UIPopoverController from within its contentViewController?
如果你想解雇一個彈出窗口 - 例如,從popover的contentViewController中的一個按鈕你必須 -
dismissPopover:animated
調用通知或委托方法時設置dismissPopover:animated
同時,從UIViewController
可以訪問模態視圖控制器,父視圖控制器,導航控制器,拆分視圖控制器,標簽欄控制器,搜索顯示控制器,子視圖控制器,呈現視圖控制器和呈現查看控制器。
從popover的contentViewController有更好的方法嗎?
不幸的是,你必須創建一個對所述UIPopoverController
的弱屬性引用,因為無法從內容視圖控制器中訪問它。
我很驚訝UIViewControllers如何訪問模態視圖控制器,父視圖控制器,導航控制器,拆分視圖控制器,標簽欄控制器,搜索顯示控制器,以及iOS 5,子視圖控制器以及呈現並提供控制器...但不是彈出控制器(授予的彈出窗口不是UIViewController
但仍然)。
從技術上講,有一個私有的,未記錄的方法來檢索UIViewController所在的popoverController ...我不知道為什么它們從未公開它,因為它應該與上述任何控制器完全相同。
雖然即使在私有的,未記錄的世界中,也沒有相當於dismissModalViewcontrollerAnimated:
. 你仍然必須得到那個引用然后以這種方式解雇它。
解決此問題的另一種方法是創建一個抽象視圖控制器(用於所有視圖控制器),將NSNotification
觀察器添加到方法,例如-(void)closePopoverIfNecessary:(NSNotification*)notification
並讓子類可選地實現關閉的方法他們的彈出窗口如果打開的話。 然后從彈出框的控制器中激活通知以關閉它。 如果需要,您還可以通過通知(userInfo)傳遞其他信息。
這樣就不需要父引用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.