我正在設計一個將被其他開發人員使用的iOS靜態庫。這個庫需要提供自己的模態UI。我正在尋找最簡單的方法來設計應用程序和此庫之間的接口來完成此操作。我只需要支持iOS 4.0及更高版本。設計提供自己的模態UI的iOS靜態庫的最簡單方法是什麼?
粗糙架構
我的靜態庫有一個班一個非常簡單的API。應用程序的AppDelegate實例化這個類並將自己設置爲委託,以便它可以接收通知。當應用程序希望庫顯示其UI時,它會調用單個方法,然後當庫完成其工作時,它會通過其中一個委託協議的方法發送通知。
我可以看到兩種方法來實現這一點。
選項1
當應用程序需要的庫,以顯示其UI,該通行證的AppDelegate在self.window,和庫設置自己的根視圖控制器,有效地採取UI的全部所有權。 UI完成後,它會通知AppDelegate,AppDelegate然後在窗口上設置自己的根視圖控制器,並取回UI的所有權。
選項2
庫暴露視圖控制器,其應用可以推到它喜歡的任何視圖堆棧。當圖書館通知用戶界面已完成時,該應用程序還負責刪除視圖控制器。
問題
對於選項1,有可能是在運行的應用程序的中途改變根視圖控制器而問題。使用選項2時,可能會出現問題,提供可以在任意上下文中工作的視圖控制器(作爲全窗口視圖控制器,作爲UINavigationController的子視圖等)。
這兩個選項的另一個問題是AppDelegate可能收到的其他UIApplicationDelegate通知,比如applicationWillResignActive:和applicationDidBecomeActive :.該庫可能需要處理這樣的通知以正確維護其UI。當UI的活動狀態時,AppDelegate是否必須將其中的每一個傳遞給庫?
有沒有更好的選擇3,我沒有想到?
我們需要在NSObject類中編寫代碼 –
幾乎每個類你放這個是NSObject的後裔它必須是ObjectiveC代碼,所以我不確定我理解你的問題。請注意,這是> 2歲,所以不知道這是否仍然有效。 – Dad
Tnx回覆您的代碼運行良好。這是我的代碼中的一個錯誤。真棒代碼它節省了我的時間很多.. –