繁体   English   中英

editButtonItem对象如何实例化?

[英]How is the editButtonItem object instantiated?

我正在关注使用钥匙串的教程,并且更喜欢在开始学习教程之前先了解代码的工作原理。 我注意到,在名为MasterViewController的此类中,它向NavigationItem.leftBarButtonItem变量分配了一种具有编辑样式的UIBarButtonItem。 代码没有在代码库中的任何地方实例化此编辑按钮,因此我很好奇这是如何工作的? 当我尝试执行以下操作时,它不起作用:

navigationItem.rightBarButtonItem = camera

为什么是这样?

我正在关注的教程可以在Ray Weinerlich网站上找到:

这是MasterViewController的代码:

    class MasterViewController: UIViewController, UITableViewDelegate {

  // MARK: - IBOutlets
  @IBOutlet var tableView: UITableView!

  // MARK: - Properties
  var detailViewController: DetailViewController?
  var managedObjectContext: NSManagedObjectContext?
  var isAuthenticated = false
  var didReturnFromBackground = false
  var _fetchedResultsController: NSFetchedResultsController<Note>?

  // MARK: - View Life Cycle
  override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.leftBarButtonItem = editButtonItem


    let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(insertNewObject(_:)))
    navigationItem.rightBarButtonItem = addButton

    if let split = splitViewController {
      let controllers = split.viewControllers
      detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
    }
}

这是内置的UIBarButton项,用户可以随时使用。 您可以直接使用它,它将在编辑和完成之间切换。

请参阅下面的文档。 在此处输入图片说明

如果您对某个对象或变量有疑问,只需按住Command键并单击该变量和对象,即可查看更多有关该对象的信息。

我想您是在问这条线:

navigationItem.leftBarButtonItem = editButtonItem

editButtonItem来自UIViewController 请注意,这是一个只读属性。 该实现可能是一个惰性计算属性,该属性在您首次访问该属性时创建按钮。 它是UIViewController实现的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM