Переход к ViewController из UIButton в Swift - PullRequest
1 голос
/ 25 апреля 2019

У меня есть TabViewController, который имеет три вкладки, которые ведут к трем ViewController.

Я могу очень легко переходить с помощью реальных кнопок вкладок TVC. Однако я также хочу перейти на одну из вкладок, используя UIButton. У меня есть кнопка в одном ViewController, и я хочу перейти к другому, но не с помощью кнопки Tab.

У меня была пара частичных успехов. Под частичным я подразумеваю, что VC появляется, но TabBar нет!

Код для контроллера вида, в котором находится UIButton, находится ниже:

import UIKit

class HomeView: UIViewController {

    @IBOutlet var startBtn: UIButton! //Define the start button as a variable
    @IBOutlet var homeText: UILabel! //Define the text on the home screen

    override func viewDidLoad() {
        super.viewDidLoad()
        setBackground(); //Set background image
        setStartBtn();
        setHomeText();
    }

    func setBackground() {

        // Apply the insets…
        let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
        backgroundImage.image = UIImage(named: "Background.png")
        backgroundImage.contentMode = UIView.ContentMode.scaleAspectFill
        self.view.insertSubview(backgroundImage, at: 0)
    }

    func setStartBtn() {
        let startBtnText = NSLocalizedString("Start Test", comment: "")
        startBtn.addTarget(self, action: #selector(self.clickStart(_:)), for: .touchUpInside) //Add a target and action of the start buton
        startBtn.setTitle(startBtnText, for: [])
    }

    func setHomeText() {
        let homeTextStr = NSLocalizedString("Home Text", comment: "")
        homeText.text = homeTextStr
    }

    @objc func clickStart(_ sender: UIButton) {

    }
}

РЕШЕНИЕ:

Функция Click Start выглядит так, как мне нужно (благодаря принятому ответу ниже).

@objc func clickStart(_ sender: UIButton) {
    self.tabBarController?.selectedIndex = 1 // 1 is the second tab
}

Это позволило мне перейти ко второму элементу панели вкладок из кнопки UIB в представлении

1 Ответ

2 голосов
/ 25 апреля 2019

Вам нужно встроить каждый vc во вкладку внутри navigationController, а затем использовать его для перехода к вложенному vc

@objc func clickStart(_ sender: UIButton) { 
   let vc = self.storyboard!.instantiateViewController(withIdentifier: "VCID") // set id for the destination vc
   self.navigationController?.pushViewController(vc,animated:true) 
}

И это для перехода на другой виртуальный канал внутри вкладки

self.tabBarController?.selectedIndex = 1 // 1 is the second tab
...