iosswiftxcoderightbarbuttonitem

how to Change the name of bar button dynamically


Can anyone please let me know how to convert the bar button item named as "save" to "update" in view controller while updating the data in table view controller. I am using ios 9, xcode 7.3 and swift 2.2.

I am providing the sample code for the bar button.

@IBAction func save(sender: UIBarButtonItem) {

//func Plus(sender: AnyObject) {

    if isUpdate == true{
        print("object id \(self.store?.objectID)")
        self.store?.sTitle = titlename.text
        self.store?.sNote = note.text
        //save.setTitle("my text here", forState: .Normal)
        let img = UIImage(named: "image.jpg")
        let imgData = UIImageJPEGRepresentation(img!,1)
        self.store?.sImage = imgData
        do {
            try appdelegate.managedObjectContext.save()
            self.navigationController?.popViewControllerAnimated(true)
        } catch let error as NSError  {
            print("Could not save \(error), \(error.userInfo)")
        }

    }else{
        //get the description of the entity
        let storeDescription = NSEntityDescription.entityForName("Store",inManagedObjectContext: appdelegate.managedObjectContext)

        //we create managed object to be inserted to core data
        let store = EventsandnotesStore(entity : storeDescription!,insertIntoManagedObjectContext:appdelegate.managedObjectContext)
        store.sTitle = titlename.text
        store.sNote = note.text

        let img = UIImage(named: "image.jpg")
        let imgData = UIImageJPEGRepresentation(img!,1)

       store.sImage = imgData
        do {
            try appdelegate.managedObjectContext.save()
            self.navigationController?.popViewControllerAnimated(true)
        } catch let error as NSError  {
            print("Could not save \(error), \(error.userInfo)")
        }

    }

Solution

  • Change title like this in your viewDidLoad

    if (isUpdate == true) {
        let item = self.navigationItem.rightBarButtonItem
        item?.title = "Update"
    }