2016-05-14 3 views
0

私は手動のUITabbarを作成しました。私は3つのTabBarItemsを作成し、他のViewControllerを切り替えるために使いました。私は、BarItemsを使って、アプリケーション全体の他のViewControllerを切り替える方法を見つけることができません。プログラムでViewControllerを切り替える方法はありますか?私はスイフトを使用しています。ここで手動UITabbarを使用して他のViewControllerを切り替える方法

だけでタブバーを表示し、ユーザーが別のタブを選択したときにそのデリゲートを伝え

class ViewController: UIViewController, UITabBarDelegate { 

    // All Outlets Connected to StoryBoard 
    @IBOutlet var BTN: UIButton! 
    @IBOutlet var BTN2: UIButton! 
    @IBOutlet var BTN3: UIButton! 
    @IBOutlet var BTN4: UIButton! 
    @IBOutlet var tbl: UITableView! 
    @IBOutlet var Button: UIBarButtonItem! 
    @IBOutlet var AllButton: UITabBarItem!//First Item 
    @IBOutlet var TabBar1: UITabBar! //Manual UITabbar 
    @IBOutlet var PriorityButton: UITabBarItem!//Third Item 
    @IBOutlet var ClassesButton: UITabBarItem!//Second Item 
    @IBOutlet var Bar: UINavigationItem! 

    //Other Variables 
    var varView = Int() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     if revealViewController() != nil { 
      Button.target = revealViewController() 
      Button.action = #selector(SWRevealViewController.revealToggle(_:)) 
     } 

     self.view.backgroundColor = UIColor(red: 50/255.0, green: 132/255.0, blue: 255/255.0, alpha: 1.0) 

     BTN.alpha = 1.0 
     BTN4.alpha = 0 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func BTNClicked(sender: AnyObject) { 
     UIView.animateWithDuration(1.0, animations: ({ 
      self.BTN2.transform = CGAffineTransformMakeTranslation(0, -90) 
      self.BTN3.transform = CGAffineTransformMakeTranslation(0, -180) 
      self.BTN4.transform = CGAffineTransformMakeTranslation(0, 0) 
      self.BTN.alpha = 0 
      self.BTN4.alpha = 1.0 
     })) 
    } 

    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 
     //This method will be called when user changes tab. 

     //Do I use this? I am using a manual Tabbar just to remind you guys. 
    } 

答えて

0

UITabBar ...私ViewController.swiftファイルを見ています。 UITabBarControllerはあなたが望むものとまったく同じです:ユーザーが別のタブを選択すると、それらを切り替えるビューコントローラのコレクションを管理します。 UITabBarControllerを使用することについては、魔法のようなものでもプログラム的でもないものはありません。ストーリーボードを使用したくない場合は、いつでもコード内にUITabBarControllerを設定することができます。あなたに何も言わない限り、UITabBarControllerを使用してください。

実際にUITabBarだけを使用する場合は、ビューコントローラにUITabBarDelegateを実装し、ビューコントローラをタブバーのデリゲートとして設定できます。ユーザーがタブをタップすると、-tabBar:didSelectItem:メソッドが呼び出され、別のビューに切り替えるなど、必要な操作を実行できます。タブバーはあなたのための切り替えを行いません - はです。ビューまたはビューコントローラーを管理するためのロジックを持たずに、タブバービューをにします。

あなたの質問のタイトルは、ビューコントローラの間で切り替えたいとしています。しかし、おそらくタブバーが常に見えるようにしたいと思うでしょう。これは、タブ項目に関連付けられたビューコントローラのリストを保持するビューコントローラを作成し、子ビューコントローラを持ち、-tabBar:didSelectItem:が呼び出されるたびに子ビューコントローラを置き換えるように実装する必要があることを意味します。要するに、UITabBarControllerが既に何を複製する必要があります。

+0

UITabBarControllerではなく、Tabbarを使用してビューを切り替える方法はありますか? – AS2345

+0

@ AS2345上記の私の編集を参照してください。 – Caleb

+0

@Caleb So Imは '-tabBar:didSelectItem:'メソッドを使って、Segueを別のViewControllerに「プッシュ」します。問題は、TabBarが元のVCにある空のスペースを残すことです。私は別のVCにセグをするとき、どのようにTabbarを表示させることができますか? – brkr

関連する問題