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

Swift 4:在IB中设置类导航控制器返回按钮样式的下一步按钮

嘿,我完全懂你的困惑——之前确实有不少开发者误以为Interface Builder里有现成的、和返回按钮样式完全匹配的「下一步」预设按钮,但其实苹果并没有提供这个默认控件。不过别担心,不管是用IB可视化配置,还是写代码实现,都能做出和返回按钮风格高度一致的自定义按钮,下面给你详细说两种方案:

用Interface Builder实现的步骤
  • 先拖一个UIButton到导航栏的右侧(或者你需要放置的位置)
  • 调整按钮样式来匹配返回按钮:
    • 把按钮的Type改成「Custom」,这样才能自由搭配图标和文字
    • 图标可以用系统的SF Symbol里的「chevron.right」,和返回按钮的「chevron.left」正好对应,视觉上统一
    • 调整文字和图标的间距:在IB的「Control」面板里找到「Content Insets」和「Image Insets」,参考系统返回按钮的间距来微调,确保整体排版协调
    • 文字样式匹配:把按钮的字体设置成和导航栏返回按钮一致的系统字体(一般是17号、medium权重),颜色用导航栏的tintColor,保证色调统一
    • 别忘了开启「Highlighted Adjusts Image」选项,让按钮点击时的反馈和返回按钮一样
用代码实现的灵活方案

如果需要动态调整样式,或者想在多个页面复用这个按钮样式,代码实现会更方便:

// 创建自定义按钮
let nextButton = UIButton(type: .custom)
// 设置匹配的图标(使用SF Symbol,开启模板模式保证颜色随tint变化)
let nextIcon = UIImage(systemName: "chevron.right")?.withRenderingMode(.alwaysTemplate)
nextButton.setImage(nextIcon, for: .normal)
// 设置按钮文字
nextButton.setTitle("下一步", for: .normal)
// 调整图标与文字的间距,和返回按钮对齐
nextButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 8)
nextButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 0)
// 匹配系统返回按钮的样式
nextButton.tintColor = navigationController?.navigationBar.tintColor
nextButton.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
// 添加点击事件
nextButton.addTarget(self, action: #selector(nextButtonTapped), for: .touchUpInside)
// 将按钮设置为导航栏右侧按钮
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: nextButton)

// 点击事件处理
@objc private func nextButtonTapped() {
    // 这里写你的下一步逻辑
}

补充一句:苹果没做预设的下一步按钮,是因为返回按钮和导航栈的返回行为强绑定,而下一步属于自定义业务行为,所以需要我们手动对齐样式。只要抓住图标风格、字体、颜色、间距这几个关键点,做出和返回按钮一模一样的视觉效果完全没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:13:08