删除 tableView 单元格 SWIFT

Deleting a tableView cell SWIFT

如何使用 Swift 删除 table 视图单元格?我也在使用解析。如果有人可以告诉我如何进行操作,那就太好了 sheet 询问,"Are you sure you want to delete?" 如果没有,那也没关系。

这是我目前的代码:

import UIKit

class MasterTableViewController: UITableViewController, UITableViewDelegate,
PFLogInViewControllerDelegate, PFSignUpViewControllerDelegate {

    var noteObjects: NSMutableArray! = NSMutableArray()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem()
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        if (PFUser.currentUser() == nil) {

        }else {
            self.fetchAllObjectsFromLocalDatastore()
            self.fetchAllObjects()
        }
    }

    func fetchAllObjectsFromLocalDatastore() {

        var query: PFQuery = PFQuery(className: "Note")

        query.fromLocalDatastore()
        query.whereKey("username", equalTo: PFUser.currentUser()!.username!)
        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

            if (error == nil) {

                var temp: NSArray = objects!;  NSArray.self

                self.noteObjects = temp.mutableCopy() as! NSMutableArray
                self.tableView.reloadData()

            }else {

            }
        }
    }

    func fetchAllObjects() {

        PFObject.unpinAllObjectsInBackgroundWithBlock(nil)

        var query: PFQuery = PFQuery(className: "Note")

        query.whereKey("username", equalTo: PFUser.currentUser()!.username!)
        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

            if (error == nil) {

                PFObject.pinAllInBackground(objects, block: { (success, error) in
                    if error == nil {
                        self.fetchAllObjectsFromLocalDatastore()
                    }
                })
            }else {

                println(error!.userInfo)

            }
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Potentially incomplete method implementation.
        // Return the number of sections.
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete method implementation.
        // Return the number of rows in the section.
        return self.noteObjects.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! MasterTableViewCell

        var object: PFObject = self.noteObjects.objectAtIndex(indexPath.row) as! PFObject

        cell.masterTitleLabel?.text = object["title"] as? String
        cell.masterTextLabel?.text = object["text"] as? String

        return cell
    }

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        self.performSegueWithIdentifier("editNote", sender: self)
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        var upcoming: AddNoteTableViewController = segue.destinationViewController as! AddNoteTableViewController

        if (segue.identifier == "editNote") {

            let indexPath = self.tableView.indexPathForSelectedRow()!

            var object: PFObject = self.noteObjects.objectAtIndex(indexPath.row) as! PFObject

            upcoming.object = object

            self.tableView.deselectRowAtIndexPath(indexPath, animated: true)

        }
    }
}

实现 table 视图的 commitEditingStyle 方法:

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == .Delete {
        let alert = UIAlertController(title: "Delete Note", message: "Are you sure you want to delete this note?", preferredStyle: .ActionSheet)

        alert.addAction(UIAlertAction(title: "Yes", style: .Destructive, handler: {
            (alert:UIAlertAction!) in
            //****//
             your code to delete item from parse.
            // ***//
             //And then remove object from tableview
             self.noteObjects.removeAtIndex(indexPath.row)
             self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
        }))
        alert.addAction(UIAlertAction(title: "No", style: .Cancel, handler: nil))

        self.presentViewController(alert, animated: true, completion: nil)
    }
}

Delete 按钮将在向左滑动特定 table 单元格时可见 希望这会有所帮助!