在 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 ItemTarget View Controller InstanceAction 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 3.0 使用Core Data

如何在 Swift 中删除添加的快捷方式?

使用 Swift 2.3 编译的模块无法在 Swift 3.0 中导入

在 Swift 上获取 UIView 和 UIImageView 的像素和点

iOS开发系列--Swift 3.0

在 Xcode 8.0 Swift 3.0 上检测手势