【问题标题】:How to add edit button to UINavigationBar after push on UINavigationController按下 UINavigationController 后如何将编辑按钮添加到 UINavigationBar
【发布时间】: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

【问题讨论】:

    标签: swift uitableview uinavigationcontroller uikit


    【解决方案1】:

    UINavigationItem 的左右栏按钮都可以表示为单个 barButtonItem 或 barButtonItems 的数组。您需要访问并设置后者(它添加了一个按钮,而不是仅仅替换 Back 按钮)。要在同一个 viewController 中执行此操作,请使用以下代码:

    if var leftBarButtonItems = self.navigationItem.leftBarButtonItems{
                leftBarButtonItems.append(self.editButtonItem())
                self.navigationItem.leftBarButtonItems = leftBarButtonItems
            }
    

    但是,如果可能的话,我会使用上面的代码将 Edit 按钮放在右侧,因为这是预期的位置。

    【讨论】:

    • 您的代码在被推送到 UINavigationController 的 UIViewController 的 viewDidLoad() 方法中时有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多