簡體   English   中英

刪除tableView單元格SWIFT

[英]Deleting a tableView cell SWIFT

如何使用Swift刪除表格視圖單元格? 我也在使用解析。 如果有人可以告訴我如何制作一個操作表,問“您確定要刪除嗎?”,那將是很好的。 如果沒有,那沒關系。

這是我到目前為止的代碼:

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)

        }
    }
}

實現tableview的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按鈕希望這會有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM