如何在swift 3中以编程方式为barButtonItem设置操作?
这是我以前用过的,
var barButtonItem = UIBarButtonItem(image: backImgs, style: UIBarButtonItemStyle.plain, target: self, action: Selector("menuButtonTapped:"))
但是Swift 3有一些语法更改。提前感谢。
例如: –
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
总结Swift 3中最常用的方法,用于向barButton添加动作。
-
巴布通与文本
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
-
BarButton拥有自己的形象
navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named:"add"), style: .plain, target: self, action: #selector(addTapped))
-
BarButton与系统图像
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
如果有人使用customView
:
barButtonItem.customView?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onBarButtonItemClicked)))
适用于iOS 10.1的Swift 3上的一行代码:
navigationController?.navigationBar.topItem?.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: nil)
您只需要从Swift 3更改selector
语法,您需要在函数调用中指定方法的第一个参数名称,因此请更改您的选择器。
#selector(menuButtonTapped(sender:))
你的方法应该是这样的。
func menuButtonTapped(sender: UIBarButtonItem) { }
let barButtonItem = UIBarButtonItem(image: UIImage(named: "backImgs"), style: .plain, target: self, action: #selector(menuButtonTapped)) // Adding button to navigation bar (rightBarButtonItem or leftBarButtonItem) self.navigationItem.rightBarButtonItem = barButtonItem // Private action @objc fileprivate func menuButtonTapped() { // body method here }
为barbutton项创建扩展。
extension UINavigationItem { func addSettingButtonOnRight(){ let button = UIButton(type: .Custom) button.setTitle("setting", forState: .Normal) button.titleLabel?.font = UIFont.systemFontOfSize(15.0) button.layer.cornerRadius = 5 button.backgroundColor = UIColor.grayColor() button.frame = CGRect(x: 0, y: 0, width: 100, height: 25) button.addTarget(self, action: #selector(gotSettingPage), forControlEvents: UIControlEvents.TouchUpInside) let barButton = UIBarButtonItem(customView: button) self.rightBarButtonItem = barButton } func gotSettingPage(){ } }
并从viewDidLoad()调用它
self.navigationItem.addSettingButtonOnRight()
在Swift 3中 ,您可以像这样添加UIBarButtonItem,
let addButton = UIBarButtonItem(image:UIImage(named:"your_icon_name"), style:.plain, target:self, action:#selector(YourControllerName.buttonAction(_:))) addButton.tintColor = UIColor.white self.navigationItem.rightBarButtonItem = addButton
并处理按钮动作,
func buttonAction(_ sender: UIBarButtonItem) { }
希望能帮助到你。
对于Swift 4,在viewDidLoad
添加:
navigationItem.rightBarButtonItem = UIBarButtonItem( barButtonSystemItem: UIBarButtonSystemItem.add, target: self, action: #selector(addTransaction) )
创建一个UIBarButtonItem:
let rightButton: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(LocationViewController.doneButtonClicked(_:)))
添加到NavigationItem:
self.navigationItem.rightBarButtonItem = rightButton
相关function:
func doneButtonClicked(_ button:UIBarButtonItem!){ print("Done clicked") }
- 如何使用cancelPreviousPerformRequestsWithTarget
- Facebook Graph API for iOSsearch
- Swift:如何返回到我的UIViewController的同一个实例
- 将CKAsset保存到CloudKit中的CKRecord会产生错误:“没有收到资产的authToken”
- NSString替换unicode字符
- 从协议扩展调用select器
- UIImagePickerController – 保存和检索从应用程序文档目录的照片
- Xcode 4.3:代码操作失败(检查您select的身份是否有效)
- 如何使用ALAssetsLibrary将图像path转换为uiimage