2017-05-26 10 views
1

私は本当に、どのようにリンク/デスティネーションのViewControllerをスウィフトのタブバー項目に変更できるか知りたいです。タブバーのタブのデスティネーションView Controllerを変更する

私の場合:

if (beforeDayX) 
{ 
    //TabBar[0] (Home) shows my1Scene with my1ViewController 
} else 
{ 
    // TabBar[0] (Home) shows my2Scene with my2ViewController 
} 

私はそれをどのようにすればよいですか?それは可能ですか?

答えて

2

注:最初の答えは、プログラムによってtabBarを作成することでした。しかし、Josep(質問者)は既にStoryboardを介して作成されたtabBarを持っているので、私はここの答えを必要に応じて変更します。

仮定:

(1)TabBarのがUITabBarViewControllerを使用して作成されました。クラス名:TabBarViewController

(2)最初は、TabbarはWeekendVC、WeekdayVC、OtherVCで構成されています。

(3)条件に基づいて、Tabbarは(WeekendVCとOtherVC)または(WeekdayVCとOtherVC)のみになります。あなたは答えに満足し、それを受け入れ、upvoteしてください場合は

import UIKit 

enum TypeOfDay { 
    case weekday 
    case weekend 
} 

class TabBarViewController: UITabBarController { 

    var typeOfDay: TypeOfDay = .weekday 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Initial order is: WeekendVC, WeekdayVC, OtherVC 
     if let currentViewControllers = self.viewControllers { 

      let weekendVC = currentViewControllers[0] 
      let weekdayVC = currentViewControllers[1] 
      let otherVC = currentViewControllers[2] 

      switch typeOfDay { 
      case .weekend: 
       self.viewControllers = [weekendVC, otherVC] 
      case .weekday: 
       self.viewControllers = [weekdayVC, otherVC] 
      } 
     } 
    } 
} 
+1

:ここ

はTabBarViewControllerがどのように見えるかです。さらなる質問がある場合は、コメントを追加してください。 – Wismin

+0

ありがとうございます、私の最後の選択肢でした。ポイントは私がこのプロジェクトで6ヶ月間働いていることです。私のタブバーはストーリーボードで作成されています。最小限のコード行を追加するだけの方法はありますか?それともコードをやり直す必要がありますか? 2番目が「はい」の場合、コード内で何を変更する必要がありますか?そして、別のもの、私の最初のビューコントローラが私が切り替えなければならないものならどうですか? –

+1

Josep、あなたの要件に合わせて答えを更新しました。そしてあなたは望むようにどんな順序でも手配することができます。答えを受け入れ、upvoteすることを忘れないでください。 – Wismin

関連する問題