如何制作第二项标签栏?

时间:2017-03-11 17:58:01

标签: swift xcode interface-builder sequence

从第二个按钮到第二项标签栏制作segue我有一个奇怪的麻烦。我有MainViewController有2个按钮。第一个按钮必须与第一个标签栏项链接,第二个按钮必须与第二个标签栏项链接。

任务看起来很简单。首先制作segue是基本的(我只是将第一个按钮连接到第一个Tab Bar控制器)但是我在连接第二个按钮时遇到了麻烦。如果我将第二个按钮与第二个视图链接,我将看到没有标签栏的视图控制器。我需要做什么?

enter image description here enter image description here

2 个答案:

答案 0 :(得分:4)

您可以使用prepare for“segue”传递给tabView查看下一个视图。

1)创建一个CustomTabViewController并加载到tabView中。 enter image description here

2)从ViewController到CustomTabBarViewConstroller选择动作。 enter image description here

4)实例化ViewController中的按钮,并为发件人委托用户选择要显示的视图。

5)以下是您需要的代码。

class ViewController: UIViewController {

// Create a value for chosed view
private var nextViewNumber = Int()

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

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "tabBar" {

        let nextView = segue.destination as! CustomTabBarViewController

        switch (nextViewNumber) {
        case 1:
            nextView.selectedIndex = 0

        case 2:
            nextView.selectedIndex = 1

        default:
            break
        }
    }
}


@IBAction func FistView(_ sender: UIButton) {
    self.nextViewNumber = 1
    self.performSegue(withIdentifier: "tabBar", sender: self)
}

@IBAction func SecontView(_ sender: UIButton) {
    self.nextViewNumber = 2
    self.performSegue(withIdentifier: "tabBar", sender: self)

}

}

enter image description here

答案 1 :(得分:1)

最简单的方法:

在视图中您来自:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let vc = segue.destination as! TabBarViewController
    vc.nextViewNumber = 4 // 4 is the tabbar number, tabbars start from 0.
}

然后,在您的TabBarViewController中-假设您已经有一个要经常使用的标签栏。

var nextViewNumber = Int()

override func viewDidLoad() {
    super.viewDidLoad()

    self.selectedIndex = 2

    if nextViewNumber == 4 {
        self.selectedIndex = 4 // Selects the 5th tabbar
        nextViewNumber = 2 // Resets
    }

}