決定賽格瑞我有以下情況:斯威夫特 - TabBarController - 在運行時
在我的TabBarController我有多個標籤,這一切工作正常,但:
一個特定標籤的目標是動態的。
如果某個條件匹配,此特定選項卡應打開一個NavigationViewController。
如果其他條件匹配,則此特定選項卡應打開一個ViewController。
有沒有內置解決方案?
如何在運行時修改選項卡的目標位置?
問候和感謝
決定賽格瑞我有以下情況:斯威夫特 - TabBarController - 在運行時
在我的TabBarController我有多個標籤,這一切工作正常,但:
一個特定標籤的目標是動態的。
如果某個條件匹配,此特定選項卡應打開一個NavigationViewController。
如果其他條件匹配,則此特定選項卡應打開一個ViewController。
有沒有內置解決方案?
如何在運行時修改選項卡的目標位置?
問候和感謝
很久很久以前,在一個星系很遠很遠...... 塞格斯根本不存在。所以是的
UITabBarController有一個setter,你可以在其中傳遞你想要處理的新視圖控制器。您將無法通過這種方式決定點擊哪個節目,但您可以根據條件變化更改控制器。
open func setViewControllers(_ viewControllers: [UIViewController]?, animated: Bool)
不過,若你確實需要決定作爲選項卡被竊聽......你可以有直接到控制器這基本上是空的選項卡控制器,並使用視圖控制器遏制該控制器具有對2個選項它,並有一個隱藏。非常適合從故事板以很少的支持代碼。我想我更喜歡這個選項。要在一定的條件下進行
func presentAppropriateView() {
if condition {
performSegue(withIdentifier: "ToNavBar", sender: self)
} else {
performSegue(withIdentifier: "ToVC", sender: self)
}
}
如果你寧願繼續使用塞格斯,那麼你可以根據一些condition
變量的這樣的狀態下執行特定Segue公司在運行時並調用
[self.tabBarController setSelectedIndex:0];
其中索引可以是您的選擇
寫的委託方法: