2015-09-09 210 views
0

如何使用Swift刪除表格視圖單元格?我也在使用解析。如果有人能告訴我如何製作一個行動表,問「你確定要刪除嗎?如果不是這樣的話。刪除tableView單元格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) 

     } 
    } 
} 

回答

1

實現commitEditingStyle方法的tableview的:

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按鈕就會在向左滑動特定的表格單元格 希望這將有助於可見!

+0

非常感謝你 –

+0

很高興幫助你! – iRiziya

相關問題