在 rootView Swift 3.0 之后以编程方式在 ViewControllers 添加栏按钮项
Posted
技术标签:
【中文标题】在 rootView Swift 3.0 之后以编程方式在 ViewControllers 添加栏按钮项【英文标题】:add bar button item programmatically at ViewControllers after rootView Swift 3.0 【发布时间】:2017-07-31 10:26:47 【问题描述】:我有一个视图层次结构
只有一个导航控制器及其 rootViewController。
我想在被圈出的视图中添加一个左栏按钮项。
我要添加的View barButton:
我试过了
self.navigationController?.navigationItem.leftBarButtonItem = editButtonItem
在viewDidLoad()
和viewWillAppear()
中,但都没有成功。
我还尝试在storyBoard中添加UINavigationItem
,然后添加barButtonItem。这也没有用。
编辑
我尝试了下面的答案,这就是我在输出中得到的。
我尝试回答后的输出:
任何帮助将不胜感激。
【问题讨论】:
请出示用于定义editButtonItem
的代码。
这是内置的。
@DávidPásztor 这是由 xcode 提供的定义 var editButtonItem: UIBarButtonItem get 描述 返回一个在编辑和完成之间切换其标题和关联状态的条形按钮项。如果将 navigationItem 属性的自定义视图之一设置为返回的对象,则关联的导航栏会在 isEditing 为 false 时显示一个 Edit 按钮,如果 isEditing 为 true 则显示一个 Done 按钮。默认按钮操作调用 setEditing(_:animated:) 方法。可用性 ios(10.0 及更高版本)、tvOS(10.0 及更高版本)在 UIKit 中声明
【参考方案1】:
您可以像添加条形按钮
let btnleft : UIButton = UIButton(frame: CGRect(x:0, y:0, width:35, height:35))
btnleft.setTitleColor(UIColor.white, for: .normal)
btnleft.contentMode = .left
btnleft.setImage(UIImage(named :"yourimage.png"), for: .normal)
btnleft.addTarget(self, action: #selector(YOUR_ACTION), for: .touchDown)
let backBarButon: UIBarButtonItem = UIBarButtonItem(customView: btnleft)
self.navigationItem.setLeftBarButtonItems([backBarButon], animated: false)
【讨论】:
检查你的后退按钮是否被隐藏 不,我有后退按钮。我想插入一个右键 self.navigationItem.setRightBarButtonItems([backBarButon], 动画: false)【参考方案2】:a) 使用 System Item
、 Target View Controller Instance
和 Action Method Name
创建一个新的 BarButtonItem。
b) 分配给leftBarButtonItem
c) 很高兴在func viewWillAppear()
中这样做
就是这样!
let editButtonItem = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(actionEdit)) // actionEdit is your Action Method for this button
navigationItem.leftBarButtonItem = editButtonItem
【讨论】:
我认为问题不在于按钮,而在于导航栏本身。我尝试了各种按钮,但仍然无法显示以上是关于在 rootView Swift 3.0 之后以编程方式在 ViewControllers 添加栏按钮项的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swift 2.3 编译的模块无法在 Swift 3.0 中导入