2012-03-31 30 views
0

我知道UIPopovercontroller不保留本身,而presenting.So我們有一個參考,以保持它保持它活着ipad,如何管理Barbuttonitem提供的Popover?

而且當按下它呈現酥料餅的barbuttonitem,它不會自動關閉該酥料餅,它實際上當你按下按鈕時會一次又一次地彈出另一個彈出窗口,並且不做任何特別的檢查是否已經有一些彈出窗口。

我知道我們可以有很多的屬性,以保持每barbuttonitem的酥料餅的,但我認爲這是醜陋的...

有沒有更好的做法?

回答

0

我使用與ARC的彈出並沒有做任何特殊的事情來維護引用計數。只要彈出窗口在屏幕上,有強烈的引用來保持它活着。你有沒有可以發佈的失敗案例?

我認爲你提到的第二個問題更有趣:按barButtonItem反覆創建彈出窗口的多個實例。很難看到它們,因爲它們疊在一起。但彈出窗口周圍的陰影會隨着每個添加的實例而變暗。真正的問題是每個實例都必須單獨解散。

一個解決方案是禁用/啓用UIBarButtonItem進出彈出窗口的方式。這對我來說效果不錯,但有點乏味。 (我必須把代碼放在兩個地方 - 一個放在我自己的dismisser中,另一個放在popoverController的委託的 - popoverControllerDidDismissPopover:方法中,用於用戶在彈出框之外單擊以解除它的情況。)

我認爲(優秀)斯坦福CS193P課程通過在彈出窗口顯示時隱藏按鈕來解決此問題。

iOS行爲實際上看起來像一個錯誤。 barButtonItem中的點擊是彈出之外的,除非barButtonItem的視圖包含在彈出窗口的passthrough數組中,否則應該(根據文檔)關閉彈出窗口。但事實並非如此,蘋果公司也沒有問我。

我剛剛檢查並發現passthrough數組最初爲零,因此從該數組中刪除barButtonItem的視圖不是一個選項。討厭鬼。

+0

也看到這個相關的問題:http://stackoverflow.com/questions/2642405/dismissing-ipad-uipopovercontroller-when-barbuttonitem-is-pushed-while-its-open?rq=1 – jbbenni 2013-04-04 13:07:03