是否有可能一個UIView實例存儲莫名其妙地以這樣一種方式,它可以從其他視圖控制器來訪問?我知道這可能與他們說的「全局」接近,但我離題了。我所知道的是,我有一對UITabBar選項卡,它們需要引用在一個選項卡中實例化的視圖的同一個實例,並且需要在另一個選項卡中再次顯示。做這樣的事情最好的方法是什麼?顯示相同的UIView實例在不同UIViewControllers
回答
肯定。您只需要將保留的引用存儲在持久對象中的UIView
對象中。例如,您可以將保留屬性添加到UIApplicationDelegate
子類中。您可以讓該委託實例化視圖,並且所有控制器都會嚮應用程序委託請求視圖。如果您有始終可用的根視圖控制器,則可以將其保留在那裏。
通過您的應用程序的整體結構也許在想能幫助找到「正確」的地方來存儲UIView
。下面我介紹一個我經常使用的應用程序結構,並不一定是關於如何構建應用程序的建議,而是作爲擴展選項的示例,您可以考慮幫助您考慮最適合您的應用程序結構。
我寫了很多小冊子的應用程序一樣爲我們的客戶。在這些應用程序中,我需要提供一些意見,每種意見都與手冊中的頁面有點類似。這些視圖中的某些視圖將具有用戶交互,並且需要在屏幕外保留其狀態,或與其他視圖共享狀態數據。
爲了管理這些應用程序創建演示文檔管理對象。此對象將保留應用程序的整體狀態,包括未顯示時必須保留的視圖。我使用一個擁有演示管理器的主UIViewController,並負責所有常見的視圖控制操作。個別視圖的具體邏輯將在每個視圖的UIView子類中進行。這些單獨的視圖由演示文稿管理器創建,並可以向該管理器詢問所知道的內容,包括任何持久性視圖。
是的,聽起來像我的應用程序與您的應用程序非常相似,它需要執行的操作...在屏幕外保留視圖的狀態。 – purefusion
B/C讓你使用UITabBar我會建議您的自定義視圖添加到窗口的應用程序委託。那麼你不必存儲它,只是隱藏它。您可以使用NSNotificationCenter發送通知來顯示視圖,也可以調用您的appDelegate並手動顯示視圖。
你可以使用依賴注入,在同一視圖實例注入到視圖控制器是這樣的:
UIView *myView = [UIView new];
UIViewController *controller1 = [UIViewController new];
UIViewController *controller2 = [UIViewController new];
controller1.view = myView;
controller2.view = myView;
[myView release];
@Abhinit:當然,只是更新了我的答案:) –
有趣。我沒有想到做這樣的,但我敢肯定,這不會與UITabBar意見工作,因爲的UITabBarController將獨立的情況下我會實例使用上面的代碼的實例每個選項卡的本身看法。任何想法如何解決這個問題? – purefusion
- 1. 重用多個UIViewControllers相同的UIView
- 2. 在SQLiteOpenHelper的不同實例中使用SQLiteDatabase的相同實例
- 3. will_paginate在相同的實例變量,但爲三個不同的顯示屏
- 4. UIView約束在iPad上不顯示相同的結果
- 5. 相同的實例
- 6. 角2航行在不同的數據相同成分的不同實例顯示
- 7. 以相同的實際尺寸顯示不同的字體?
- 8. 相同的代碼,但顯示不同
- 9. 如果某些屬性與已經顯示的實例相同,不顯示對象的實例?
- 10. 注入相同的實例
- 11. 相同的預製實例在不同的速度
- 12. 在pyyaml中表示具有相同基類的不同類的實例
- 13. 如何用AngularJS隱藏/顯示相同的模態實例?
- 14. 更新兩個編輯器實例顯示相同的文件
- 15. 顯示多個相同形式的實例?
- 16. 不顯示相同的標籤?在PHP
- 17. UIScrollView如何與StoryBoard一起使用並顯示不同的UIViewControllers?
- 18. 在不同類別的相同實例C++
- 19. 匕首 - 在不同組件上獲取相同的實例
- 20. 不同頁面上的相同元素顯示不同的CSS
- 21. 相同的內容不顯示在不同的瀏覽器
- 22. 使用相同的UIInterfaceOrientation所有UIViewControllers
- 23. 如何在不同分辨率下顯示相同的「比例」文字大小?
- 24. 顯示不同組的按鈕,用於微小mce的不同實例
- 25. html在IE8中不顯示相同
- 26. 訪問不同的URL,同時顯示相同的URL
- 27. UIView不接受UIViewControllers數據
- 28. C#在不同的標籤上顯示相同的面板
- 29. 在不同的地方顯示相同的datagridview(c#)?
- 30. 在不同的按鈕中顯示相同的ID。衝突
只是一個關於問題命名的提示,儘量簡化它,比如「在不同的UIViewControllers中顯示相同的UIView實例」 – Cyprian
我很糟糕!無論如何,我現在已經更新到您的建議! :) (以前「存儲一個UIView實例,以便它可以在其他視圖控制器被其他視圖隱藏後調用)」 – purefusion