如果 selectedSegmentIndex 不同,则不同 ViewController

Different ViewController if different selectedSegmentIndex

我的密码是

@IBAction func pressedButton(_ sender: Any) {  
        self.resignFirstResponder()
        if mySegment.selectedSegmentIndex == 0 {

这里我需要如果我在 ViewControllerA 上选择了 Segment #0(然后按下我的按钮)然后转到 ViewControllerB,如果 Segment # 1 然后 ViewControllerC,如果段 #2 然后 ViewControllerD.
可能吗?

是的,如果你使用 UINavigationController 或 present

,你可以在 IB 中为他们设置 id 并推送
if mySegment.selectedSegmentIndex == 0 {

     let so = self.storyboard?.instantiateViewController(withIdentifier: "AID")

     self.navigationController?.pushViewController(so!, animated: true)
}
else  if mySegment.selectedSegmentIndex == 1 {

    let so = self.storyboard?.instantiateViewController(withIdentifier: "BID")

    self.navigationController?.pushViewController(so!, animated: true)
}

Swift:

    if(sender.selectedSegmentIndex==0)
     {

       let lvc = self.storyboard?.instantiateViewController(withIdentifier: "cellVC") as! YourViewController1
       self.navigationController?.pushViewController(lvc!, animated: true)
     }

   else 
     {
        let vc = self.storyboard?.instantiateViewController(withIdentifier: "cellVC1") as! YourViewController2
        self.navigationController?.pushViewController(vc!, animated: true)
     }

对象:

 if(sender.selectedSegmentIndex==0)
 {
  viewcontroller1 *yourView1=[[viewcontroller alloc]init];
  [self.navigationController pushViewController:yourView1 animated:YES];
 }
 else 
 {
  viewcontroller2 *yourView2=[[viewcontroller2 alloc]init];
  [self.navigationController pushViewController:yourView2 animated:YES];
 }

您应该为通用解决方案创建枚举,而不是使用 if else 条件。

像这样创建 ViewController 的枚举,

enum CurrentViewController : Int {
    case ViewControllerB
    case ViewControllerC
    case ViewControllerD

    var description : String {
        switch self {
            case .ViewControllerB: return "ViewControllerB"
            case .ViewControllerC: return "ViewControllerC"
            case .ViewControllerD: return "ViewControllerD"
        }
    }
}

现在转到合适的控制器,你可以这样做,

let currentViewController = CurrentViewController(rawValue: mySegment.selectedSegmentIndex)
let viewController = self.storyboard?.instantiateViewController(withIdentifier: (currentViewController?.description)!)
self.navigationController?.pushViewController(viewController!, animated: true)

以上是适用于所有人的通用解决方案。如有任何疑问,请告诉我。

  1. 首先为每个 viewController 连接一个 segue。 control-从 ViewControllerA 顶部的 viewController 图标拖动到另一个 ViewController 和 select segue 类型。

  2. 单击 viewController 之间的 segue 箭头,并在 Attributes Inspector[=45] 中设置其 identifier =]右边.

  3. 为每个 ViewControllerBViewControllerCViewControllerD 重复第 1 步和第 2 步,为其提供唯一的 id,例如 "segueToB""segueToC""segueToD".
  4. 在您的按钮代码中,执行以下操作:

    let idx = mySegment.selectedSegmentIndex
    let segueID = ["segueToB", "segueToC", "segueToD"][idx]
    self.performSegue(withIdentifier: segueID, sender: self)
    

连接两个segue的Demo:

可以 ,只需设置 StoryBoard

中 ViewController 的 id
if mySegment.selectedSegmentIndex == 0 {

 let vcB = self.storyboard?.instantiateViewController(withIdentifier: "VCB")
 self.navigationController?.pushViewController(vcB, animated: true)

}else  if mySegment.selectedSegmentIndex == 1 {

let vcC = self.storyboard?.instantiateViewController(withIdentifier: "VCB")
self.navigationController?.pushViewController(vcC, animated: true)

}else  if mySegment.selectedSegmentIndex == 2 {

let vcD = self.storyboard?.instantiateViewController(withIdentifier: "VCD")
self.navigationController?.pushViewController(vcD, animated: true)

}