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

Swift中如何将Toolbar的Done按钮调整至右侧?

解决Toolbar中Done按钮移至右侧的问题

嗨,我来帮你搞定这个问题!要把Done按钮移到Toolbar的右侧,只需要给Toolbar的items列表先添加一个灵活空间的BarButtonItem,就能自动把Done按钮挤到最右边啦。

原因说明

UIToolbar的按钮是从左到右依次排列的,默认直接添加Done按钮会显示在左侧。而UIBarButtonItem(barButtonSystemItem: .flexibleSpace)会占据Toolbar中所有可用的空白空间,从而把后面的Done按钮推到右侧位置。

修改后的完整代码

let picker = UIDatePicker()

func createDatePicker() {
    let toolbar = UIToolbar()
    toolbar.sizeToFit()
    
    // done button for toolbar
    let done = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
    // 添加灵活空间,把Done按钮推到右侧
    let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    toolbar.setItems([flexibleSpace, done], animated: false)
    
    tanggalLahirTextField.inputAccessoryView = toolbar
    tanggalLahirTextField.inputView = picker
    picker.datePickerMode = .date
}

// 别忘了实现donePressed方法
@objc func donePressed() {
    tanggalLahirTextField.resignFirstResponder()
    // 这里可以添加处理选中日期的逻辑
}

额外小提示

如果之后你需要在左侧也添加按钮(比如取消按钮),可以这样组合items:

let cancel = UIBarButtonItem(barButtonSystemItem: .cancel, target: nil, action: #selector(cancelPressed))
toolbar.setItems([cancel, flexibleSpace, done], animated: false)

这样Cancel按钮会在左侧,Done在右侧,中间的灵活空间会自动填充两者之间的空白。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:47