ios - 如何以编程方式在 Swift 中创建 "Back"UIBarButton 项目?

标签 ios swift uibarbuttonitem

我能够创建一个可以使用以下代码以编程方式返回的 UIBarButton 项目:

    func backAction() -> Void {        
        self.navigationController?.popViewControllerAnimated(true)
    }
override func viewDidLoad() {
        super.viewDidLoad()
    let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backAction")

        self.navigationItem.leftBarButtonItem = backButton
    }

问题是后退按钮没有左箭头: enter image description here 有没有办法让它看起来像一个带有箭头的常规后退按钮,如下所示:enter image description here

我还想知道是否有办法将按钮标题名称设为前一个 View Controller 的标题,如果可能的话。

谢谢

最佳答案

下面是使用带有图像的 UIButton 的代码,您可以将其添加为 UIBarButtonItem 的自定义 View

override func viewDidLoad() {
    super.viewDidLoad()
    var backbutton = UIButton(type: .Custom)
    backbutton.setImage(UIImage(named: "BackButton.png"), forState: .Normal) // Image can be downloaded from here below link 
    backbutton.setTitle("Back", forState: .Normal)
    backbutton.setTitleColor(backbutton.tintColor, forState: .Normal) // You can change the TitleColor
    backbutton.addTarget(self, action: "backAction", forControlEvents: .TouchUpInside)

    self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backbutton)
}

func backAction() -> Void {        
   self.navigationController?.popViewControllerAnimated(true)
}

BackButton.png Download Link

要使用之前的 View Controller 标题设置后退按钮的标题,您必须在呈现 Controller 时将标题作为字符串传递,将上述代码更改为

var titleStrFromPreviousController: String // This value has to be set from previous controller while presenting modal controller
backbutton.setTitle(titleStrFromPreviousController, forState: .Normal)

这可能会有所帮助。

swift 3

override func viewDidLoad() {
    super.viewDidLoad()

    addBackButton()
}

func addBackButton() {
    let backButton = UIButton(type: .custom)
    backButton.setImage(UIImage(named: "BackButton.png"), for: .normal) // Image can be downloaded from here below link
    backButton.setTitle("Back", for: .normal)
    backButton.setTitleColor(backButton.tintColor, for: .normal) // You can change the TitleColor
    backButton.addTarget(self, action: #selector(self.backAction(_:)), for: .touchUpInside)

    self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
}

@IBAction func backAction(_ sender: UIButton) {
   let _ = self.navigationController?.popViewController(animated: true)
}

关于ios - 如何以编程方式在 Swift 中创建 "Back"UIBarButton 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279332/

相关文章:

ios - 解码 SHA256 Objective C

ios - 试图将来自 API 的 JSON 对象中的字符串值解析为 Int 的结构

ios - 在 Swift 扩展中实现 didRegisterForRemoteNotificationsWithDeviceToken 不起作用

iOS 导航右栏按钮项目 - 图标在对话框后更改

ios - 导航栏上的自定义 UIBarButtonItem 图像偏移

ios - 无法在 xcode 9 中为应用程序包 ID 创建 IXPlaceholder

ios - 获取设备图像比例(例如@1x、@2x 和@3x)

ios - skstoreproductviewcontroller : how to open "rating and review" at launch

ios - 画外音读取 tableview 中的所有单元格

ios - VoiceOver 忽略 UIBarButton 中的 accessibilityHint