Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift editButtonItem对象是如何实例化的?_Swift_Uibarbuttonsystemitem - Fatal编程技术网

Swift editButtonItem对象是如何实例化的?

Swift editButtonItem对象是如何实例化的?,swift,uibarbuttonsystemitem,Swift,Uibarbuttonsystemitem,我正在学习一个关于使用钥匙链的教程,我更喜欢在深入学习教程之前了解代码的工作原理。我注意到,在这个名为MasterViewController的类中,它为navigationItem.leftBarButtonItem变量指定了一个具有编辑样式的UIBarButtonItem。代码在代码库的任何地方都没有实例化这个编辑按钮,所以我很想知道它是如何工作的?当我尝试执行以下操作时,它不起作用: navigationItem.rightBarButtonItem = camera 为什么会这样 我下

我正在学习一个关于使用钥匙链的教程,我更喜欢在深入学习教程之前了解代码的工作原理。我注意到,在这个名为MasterViewController的类中,它为navigationItem.leftBarButtonItem变量指定了一个具有编辑样式的UIBarButtonItem。代码在代码库的任何地方都没有实例化这个编辑按钮,所以我很想知道它是如何工作的?当我尝试执行以下操作时,它不起作用:

navigationItem.rightBarButtonItem = camera
为什么会这样

我下面的教程可以在 :

以下是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
    }
}
类MasterViewController:UIViewController、UITableViewDelegate{
//标记:-IB出口
@IBVAR表格视图:UITableView!
//标记:-属性
var detailViewController:detailViewController?
var managedObjectContext:NSManagedObjectContext?
var isAuthenticated=false
var didReturnFromBackground=false
var_fetchedResultsController:NSFetchedResultsController?
//MARK:-查看生命周期
重写func viewDidLoad(){
super.viewDidLoad()
navigationItem.leftBarButtonItem=editButtonItem
让addButton=UIBarButtonItem(barButtonSystemItem:.add,目标:self,action:#选择器(insertNewObject(:))
navigationItem.rightBarButtonItem=addButton
如果let split=splitViewController{
let controllers=split.viewControllers
detailViewController=(控制器[controllers.count-1]为!UINavigationController)。topViewController为?detailViewController
}
}

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

请参阅下面的文档。


如果您对某个对象或变量有疑问,只需在Command+上单击该变量和对象,您就可以查看更多信息。

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

请参阅下面的文档。


如果您对某个对象或变量有疑问,只需在Command+上单击该变量和对象,您就可以查看更多信息。

我想您是在询问这一行:

navigationItem.leftBarButtonItem = editButtonItem

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

我想您是在询问这一行:

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