按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar
Posted
技术标签:
【中文标题】按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar【英文标题】:How to add edit button to UINavigationBar after push on UINavigationController 【发布时间】:2016-03-12 02:28:03 【问题描述】:在导航控制器上推送此新表视图后,我想将表视图的编辑按钮添加到导航控制器的导航栏。当我这样做时,编辑按钮不会出现(我怀疑“后退”按钮会掩盖它),当我返回层次结构时,它就在那里,但现在我有两个(编辑编辑)。我的源代码:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
let items:UITableViewController = ItemsController()
myNavigationController.pushViewController(items, animated:true)
myNavigationController.navigationBar.topItem!.leftBarButtonItems! += [ items.editButtonItem() ]
编辑
如果我注释掉上面的最后一行,并在 push 之前插入以下行,编辑按钮出现在左侧,但现在没有返回按钮:
items.navigationItem.rightBarButtonItem = items.editButtonItem()
解决方案
我在 ItemsController() 的 viewDidLoad() 中使用的解决方案:
var items = navigationItem.rightBarButtonItems
if items == nil
items = [UIBarButtonItem]()
items! += [ editButtonItem() ]
navigationItem.rightBarButtonItems = items
【问题讨论】:
【参考方案1】:UINavigationItem
的左右栏按钮都可以表示为单个 barButtonItem
或 barButtonItems
的数组。您需要访问并设置后者(它添加了一个按钮,而不是仅仅替换 Back
按钮)。要在同一个 viewController 中执行此操作,请使用以下代码:
if var leftBarButtonItems = self.navigationItem.leftBarButtonItems
leftBarButtonItems.append(self.editButtonItem())
self.navigationItem.leftBarButtonItems = leftBarButtonItems
但是,如果可能的话,我会使用上面的代码将 Edit
按钮放在右侧,因为这是预期的位置。
【讨论】:
您的代码在被推送到 UINavigationController 的 UIViewController 的 viewDidLoad() 方法中时有效以上是关于按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar的主要内容,如果未能解决你的问题,请参考以下文章
按下UINavigationController的后退按钮时执行操作
按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar
如何在 UINavigationController 中使用协议和委托