我有1個主UIViewController包含UITabBarController。標籤欄控制器有4個UIViewControllers(每個由UINavigationControllers管理)。簡單地說,它看起來像這樣:管理NSNotification與UITabBarController交互
MainViewController | |--- FirstUIViewController | |--- SecondUIViewController | |--- ThirdUIViewController | |--- FourthUIViewController
FirstUIViewController默認加載。
在SecondUIViewController中,有一個可能發生的事件。該事件具有與其一起傳遞的特定數據。發生此事件時,我想要發生兩件事:
1)FourthUIViewController在標籤欄控制器中被選中,以直觀顯示已輸入的不同標籤。
2)在FourthUIViewController中選擇特定UITableViewCell的後續操作。所選單元格由事件中傳遞的數據確定。
爲了做到這一點,我在MainViewController中創建了一個NSNotification觀察者。它從SecondUIViewController監聽事件,並通過userInfo從它獲取數據。
我也知道,從MainViewController我可以很容易地在UITabBarController上設置selectedIndex,以便顯示正確的選項卡。 (#1完成)。
然而,完成#2讓我感到困惑。我不知道如何(正確,正確地)設置選項卡欄的selectedIndex,然後使FourthUiViewController對所選單元格執行操作。我的假設是FourthUIViewController在事件發生之前可能沒有被加載,所以我不能設置任何參數或調用任何觀察者。
也許更廣泛的問題是,當通過選項卡選擇加載UIViewController時(與推送新的UIViewController非常簡單相比),數據如何傳遞。
TIA。
我相信其他視圖控制器可能不會在事件被引發時被初始化(並且因此將無法聽到事件)。這是假設視圖控制器初始化,直到他們的選項卡被選中。 – pschang 2010-08-23 18:51:50
在這種情況下,可以使用NSUserDefaults來傳遞此信息。您將UserData寫入NSUserDefaults,並在新的視圖首次加載時從該空間入手。一旦加載,它可以監聽通知中的數據。 – 2010-08-23 21:37:21