Swift 以编程方式从按钮执行分段

Swift 以编程方式从按钮执行分段,swift,xcode,Swift,Xcode,我用的是swift 4 我有一个标签栏控制器,我在标签栏中间创建了一个编程按钮。单击按钮后,我想执行segue并显示下一个视图。我创建了从tabar视图到下一个视图的segue,并将其命名为moveToNext 这是按钮 let button = UIButton.init(type: .custom) override func viewDidLoad() { super.viewDidLoad() let blue = UIColor(red: 53/255, gree

我用的是swift 4

我有一个标签栏控制器,我在标签栏中间创建了一个编程按钮。单击按钮后,我想执行segue并显示下一个视图。我创建了从tabar视图到下一个视图的segue,并将其命名为moveToNext

这是按钮

let button = UIButton.init(type: .custom)

override func viewDidLoad() {
    super.viewDidLoad()


    let blue = UIColor(red: 53/255, green: 92/255, blue: 125/255, alpha: 1.0)

    UITabBar.appearance().tintColor = blue

    button.setTitle("+", for: .normal)
    button.titleLabel?.font = .systemFont(ofSize: 32)
    button.setTitleColor(.white, for: .normal)
    button.setTitleColor(.white, for: .highlighted)

    button.backgroundColor = blue
    button.layer.cornerRadius = 32
    button.layer.borderWidth = 1.5
    button.layer.borderColor = blue.cgColor
    //button.layer.borderColor = UIColor.green.cgColor


    button.addTarget(self, action:#selector(self.buttonClicked), for: .touchUpInside)

    self.view.insertSubview(button, aboveSubview: self.tabBar)

    UITabBar.appearance().backgroundImage = UIImage.colorForNavBar(color: .white)
    UITabBar.appearance().shadowImage = UIImage.colorForNavBar(color: blue)

}


@objc func buttonClicked() {
    print("Button Clicked")
    self.performSegue(withIdentifier: "moveToNext", sender: self)

}
我得到以下错误

'Receiver (<Pac.CustomTabBarViewController: 0x7fc94285be00>) has no segue with identifier 'moveToNext''
*** First throw call stack:
'Receiver()没有标识符为'moveToNext'的序列
***第一次抛出调用堆栈:
我是swift和Xcode的新手,来自java背景

我认为我正确地完成了这一段。为什么它找不到segue?我如何通过点击按钮启动它

感谢您抽出时间阅读此文章并帮助我。

  • 你建立了赛格吗?在IB中⌃-从源控制器(黄色图标)拖动到目标视图控制器
  • 您指定了标识符了吗?选择所需序列,然后按⌥⌘4并在标识符字段中键入
    moveToNext

我在写这篇文章之前就看到了这一点。我说在故事板上我拖动了一个segue并命名它。我认为这与TabBar有关。你需要将segue tab bar拖动到下一个视图控制器。你可以分享你制作的segue的屏幕截图吗?源和目标视图控制器也在该字段中,右边的属性检查器也打开了吗?是的,我已经打开了。我想我已经在我的帖子中详细说明了这一点。这就是我发帖的原因,因为我做的每件事都是对的。有几种方法可以做到这一点,但无论如何都会犯错误(例如错误的segue源对象)。有4个tabor控件。我用错了