You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ViewControllerA中根据Segment选中索引点击按钮跳转至不同ViewController

当然可以实现啦!这是iOS开发里非常常见的场景,我给你整理了清晰的实现思路和代码示例,你可以直接参考:

实现方案

核心思路

  • 在按钮的点击事件回调中,获取UISegmentedControl的选中索引值
  • 根据不同的索引,创建对应的目标视图控制器实例
  • 选择合适的页面跳转方式(导航栈推送或模态弹出)

完整代码示例

@IBAction func pressedButton(_ sender: Any) {
    // 收起当前键盘(如果页面有输入控件的话)
    self.resignFirstResponder()
    
    // 根据Segment选中项判断跳转目标
    switch mySegment.selectedSegmentIndex {
    case 0:
        // 实例化ViewControllerB,这里假设你用Storyboard创建VC,需提前设置好Storyboard ID
        let targetVC = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllerB") as! ViewControllerB
        // 导航栈跳转(如果当前VC在UINavigationController中)
        self.navigationController?.pushViewController(targetVC, animated: true)
        // 若无需导航栈,可改用模态跳转:
        // self.present(targetVC, animated: true)
    case 1:
        let targetVC = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllerC") as! ViewControllerC
        self.navigationController?.pushViewController(targetVC, animated: true)
    case 2:
        let targetVC = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllerD") as! ViewControllerD
        self.navigationController?.pushViewController(targetVC, animated: true)
    default:
        // 处理未预期的索引情况(可选)
        break
    }
}

关键注意事项

  • 确保你已经在Storyboard中创建了ViewControllerB/C/D,并在它们的Identity Inspector面板中设置了正确的Storyboard ID
  • 如果当前ViewControllerA不在导航控制器栈内,记得替换成模态跳转的代码,避免navigationController为nil导致跳转失效
  • 若你是用纯代码创建视图控制器,把instantiateViewController的代码替换为ViewControllerB()这类直接初始化的方式即可

内容的提问来源于stack exchange,提问作者Laura Manukyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:35:14