Как создается объект editButtonItem? - PullRequest
0 голосов
/ 21 сентября 2018

Я следую руководству по использованию цепочки для ключей и предпочитаю понять, как работает код, прежде чем углубляться в учебник.Я заметил, что в этом классе с именем MasterViewController он назначает UIBarButtonItem со стилем редактирования для переменной navigationItem.leftBarButtonItem.Код не создает экземпляр этой кнопки редактирования где-либо в кодовой базе, поэтому мне интересно узнать, как это работает?Когда я пытаюсь сделать следующее, это не работает:

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
    }
}

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Я думаю, что вы спрашиваете об этой строке:

navigationItem.leftBarButtonItem = editButtonItem

editButtonItem от UIViewController.Обратите внимание, что это свойство только для чтения.Реализация, вероятно, является отложенным вычисляемым свойством, которое создает кнопку при первом обращении к свойству.Это часть реализации UIViewController.

0 голосов
/ 21 сентября 2018

Это встроенный элемент UIBarButton, доступный для пользователей.Вы можете напрямую использовать его, и он будет переключаться между редактированием и завершением.

См. Документацию ниже.enter image description here

Если у вас есть сомнения относительно объекта или переменной, просто нажмите Ctrl + клик по этой переменной и объекту, и вы можете проверить больше об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...