0

決定賽格瑞我有以下情況:斯威夫特 - TabBarController - 在運行時

在我的TabBarController我有多個標籤,這一切工作正常,但:

一個特定標籤的目標是動態的。

如果某個條件匹配,此特定選項卡應打開一個NavigationViewController。

如果其他條件匹配,則此特定選項卡應打開一個ViewController。

有沒有內置解決方案?

如何在運行時修改選項卡的目標位置?

問候和感謝

回答

0

很久很久以前,在一個星系很遠很遠...... 塞格斯根本不存在。所以是的

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) 
    } 
} 
0

如果你寧願繼續使用塞格斯,那麼你可以根據一些condition變量的這樣的狀態下執行特定Segue公司在運行時並調用 [self.tabBarController setSelectedIndex:0];

其中索引可以是您的選擇

0

寫的委託方法: