我有一個UITabBarController
的兩個選項卡共享數據。第一個選項卡負責生成和更新第二個選項卡消耗的數據數組。具有UINavigationController作爲選項卡的UITabViewController
我的原始方法共享標籤之間的數據工作。
------UIViewController
---UITabBarController
------UIViewController
使用上述方法,我訪問的數據的排列從第一選項卡,例如:
let pointsViewController = self.tabBarController?.viewControllers?.first as! ShowPointsViewController
tableHeaders = pointsViewController.tableHeaders
隨着ShowPointsViewController作爲第一個標籤
這是我的問題: 當我將我的第一個UIViewController
嵌入到UINavigationController
中,然後嘗試使用下面的代碼訪問我的數據數組時,我得到一個運行時錯誤,因爲之後的代碼返回爲零。我知道我正在訪問這個不正確,達到相同結果的正確方法是什麼?
let pointsViewController = self.tabBarController?.viewControllers?.first?.navigationController?.topViewController as! ShowPointsViewController
Gahhhh完善這個工作。我認爲Swift的類型推斷可以讓我避免不得不作爲'UINavigationController'投射。爲什麼這不是出於好奇呢? – Sami
self.tabBarController?.viewControllers包含UIViewControllers數組。並非所有的人都必須是UINavigationController(就像在你之前的例子中一樣),並且因爲你需要獲得對UINavigationController典型的topViewController屬性,所以你需要投射。 – Adamsor