[英]UIButton Extension For UIBarButtonItem
我正在通過獲取快速文件來編寫擴展名,並通過以下方式進行了編碼:
import Foundation
import UIKit
extension UIButton{
func backButtonTarget(_ target: Any, action: Selector) -> UIBarButtonItem {
let backButton = UIButton(frame: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(12), height: CGFloat(20)))
backButton.setBackgroundImage(UIImage(named: "back.png"), for: .normal)
let barBackButtonItem = UIBarButtonItem(customView: backButton)
backButton.addTarget(target, action: action, for: .touchUpInside)
return barBackButtonItem
}
}
現在,我嘗試通過以下方式在視圖控制器中聲明一個按鈕來使用它:
var backButton: UIButton! = nil
在我的viewDidLoad
我聲明以下代碼:
self.navigationItem.leftBarButtonItem = backButton?.backButtonTarget(self, action: #selector(self.popCurrentViewController))
並在popCurrentViewController
func popCurrentViewController() -> Void {
_ = self.navigationController?.popViewController(animated: true)
}
在這里,通過聲明以上代碼,UINavigationBar左欄項目按鈕應該按照我創建的按鈕顯示,但是它既沒有顯示也沒有輸入擴展功能,而是通過使用類別完美地處理了Objective c代碼,其中我做錯了/這里有錯? 任何幫助將是可觀的。
謝謝
navigationBar
沒有按鈕,因為您的backButton
為nil,當前您已使用實例方法添加了擴展,而不是需要類方法。
extension UIButton {
class func backButtonTarget(_ target: Any, action: Selector) -> UIBarButtonItem {
let backButton = UIButton(frame: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(12), height: CGFloat(20)))
backButton.setBackgroundImage(UIImage(named: "back.png"), for: .normal)
let barBackButtonItem = UIBarButtonItem(customView: backButton)
backButton.addTarget(target, action: action, for: .touchUpInside)
return barBackButtonItem
}
}
現在BarButtonItem
這種方式添加BarButtonItem
。
self.navigationItem.leftBarButtonItem = UIButton.backButtonTarget(self, action: #selector(self.popCurrentViewController))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.