Set table view to edit mode

I have UITableViewin UIViewControllerand added an edit button from the code, not IB. This happens to UITableViewControllers, but not to, the UIVC. How can I get this button to quickly put the table view into edit mode? Thanks in advance for any help.

class WordsViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate  {
  override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.rightBarButtonItem = self.editButtonItem()
  }

  func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        return true
  }
}
+10
source share
7 answers

Create rightBarButtonItem, as shown below, with the action.

In viewDidLoad():

let rightButton = UIBarButtonItem(title: "Edit", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("showEditing:"))
    self.navigationItem.rightBarButtonItem = rightButton

and then make a function like,

 func showEditing(sender: UIBarButtonItem)
 {
    if(self.tableView.isEditing == true)
    {
        self.tableView.isEditing = false
        self.navigationItem.rightBarButtonItem?.title = "Done"   
    }
    else
    {
        self.tableView.isEditing = true
        self.navigationItem.rightBarButtonItem?.title = "Edit" 
    }
}

Be sure :to add to the function name in the Selectoractions in viewDidLoad
Hope this helps!

+21
source

Swift 3 4 , IMHO , :

override func viewDidLoad() {
    super.viewDidLoad()

    let editButton = UIBarButtonItem(title: "Edit", style: .plain, target: self, action: #selector(toggleEditing)) // create a bat button
    navigationItem.rightBarButtonItem = editButton // assign button
}

@objc private func toggleEditing() {
    listTableView.setEditing(!listTableView.isEditing, animated: true) // Set opposite value of current editing status
    navigationItem.rightBarButtonItem?.title = listTableView.isEditing ? "Done" : "Edit" // Set title depending on the editing status
}

, :

  • .
  • "Bar" , , .
+14

Swift 4.2:

override func viewDidLoad() {
  super.viewDidLoad()

  // Use the edit button provided by the view controller.
  navigationItem.rightBarButtonItem = editButtonItem
}

override func setEditing(_ editing: Bool, animated: Bool) {
    // Takes care of toggling the button title.
    super.setEditing(!isEditing, animated: true)

    // Toggle table view editing.
    tableView.setEditing(!tableView.isEditing, animated: true)
}

setEditing editButtonItem. "" "", super.setEditing , tableView setEditing ..

:

+10

.

tableView.setEditing(true, animated: true)

, , ,

tableView.setEditing(!tableView.editing, animated: true)

, , editButtonPressed . .

override func viewDidLoad(){
 navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Edit", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("editButtonPressed"))
}

func editButtonPressed(){
  tableView.setEditing(!tableView.editing, animated: true) 
  if tableView.editing == true{
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("editButtonPressed"))
  }else{
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Edit", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("editButtonPressed"))
  }
} 

.

+8

-setEditing:animated:, super .

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];

    [self.tableView setEditing:editing animated:animated];
}
+3

Swift 3.0 njuri:

override func viewDidLoad() {
    super.viewDidLoad()

    PackageNameLabel.text = detailPackageName
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Edit", style: UIBarButtonItemStyle.plain, target: self, action: #selector(PackageDetailsTableViewController.editButtonPressed))

}


func editButtonPressed(){
    tableView.setEditing(!tableView.isEditing, animated: true)
    if tableView.isEditing == true{
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(PackageDetailsTableViewController.editButtonPressed))
    }else{
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Edit", style: UIBarButtonItemStyle.plain, target: self, action: #selector(PackageDetailsTableViewController.editButtonPressed))
    }
}
+1

Swift4.2 UIbutton

   //On Button Click
       @IBAction func mEditBtnAct(_ sender: Any) {
        if(self.mtableView.isEditing == true)
        {
            self.mtableView.isEditing = false
            self.mEditBtnOut.setTitle("Edit", for: .normal)
        }
        else
        {
            self.mTimerTablevw.isEditing = true
            self.mEditBtnOut.setTitle("Done", for: .normal)
        }
    }
0

Source: https://habr.com/ru/post/1619044/


All Articles