如何正确使用performSegue函数,视图控制器会出现几秒钟?

时间:2019-01-28 17:01:18

标签: ios swift uiviewcontroller segue uistoryboardsegue

enter image description here当前的视图控制器具有3个按钮,它们的标签随机变化,因此当用户按下按钮时,我需要检查按钮标签是否正确,我需要选择某个视图控制器,如果正确错误,我需要选择另一个视图控制器。

这是一个按钮的代码,其他按钮具有类似的代码,但变量名称除外。

wx.PostEvent

这与我选择的一个视图控制器的代码和另一个类似: 导入UIKit

  @IBAction func click2(_ sender: Any) {

    if (opt2.titleLabel?.text) != nil {
        let userAnswer=opt2.titleLabel?.text;

        if ((userAnswer!.elementsEqual(self.optionsArray[0])) == true)
        {
            playSound(fileName: "kidsCheering")
            self.performSegue(withIdentifier: "sucessMessageSegue", sender: nil)
        }
        else {
            self.performSegue(withIdentifier: "wrongMessgeSegue", sender: nil)
        }



        }
    }

这是我从终端获得的错误

警告:尝试在Proximity.ViewController:上演示Proximity.QuestionViewController:

1 个答案:

答案 0 :(得分:0)

编辑-----------------------------------

更多更新后

您无法从已经显示的视图控制器中显示视图控制器,因此请使用其他样式的segue或正确处理它。

尝试在呈现另一个UIViewController时呈现一个UIViewController,您要做的就是关闭现有的UIViewController,然后呈现一个新的

您也可以尝试类似的方法... 将此添加到ViewDidLoad()中的mainViewController上

definesPresentationContext = true

更新----------

您是否尝试过类似的操作

override func viewDidDisappear(_ animated: Bool) {

    if ViewController.isActive == true {

        ViewController.isActive = false

    }
}

或这样。

self.searchController.dismiss(animated: false) { 
    self.performSegue(withIdentifier: "<YOUR SEGUE IDENTIFIER>", sender: cell)
}

或将其添加到您进行侦听的位置

if searchController.isActive {
    self.searchController.dismiss(animated: false) { 
        // Do what you want here like perform segue or present
    }
}

这与其他基本相同。.这进入您采取行动进行侦查的地方

if presentedViewController == nil {
     self.presentViewController(alertController, animated: true, completion: nil)
} else{
      self.dismissViewControllerAnimated(false) { () -> Void in
           self.presentViewController(alertController, animated: true, completion: nil)
      }
}

您可以尝试添加调度主系统...但这不是最佳实践

DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
     //dismiss and present new one
}