2015-04-30 61 views
0

我不認爲有必要發佈我的代碼爲這個問題。我只是尋找解釋或可能是一行代碼來解決我的問題。當我在我的應用程序中刪除或添加cellForRowAtIndexPath時,它會被添加或刪除到Parse,但在應用到其他屏幕並返回之前不會顯示在應用程序中。我試圖移動我的刪除和添加代碼到viewDidLoad中和viewWillAppear中細胞只有刪除/添加一次離開和返回

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
    if editingStyle == .Delete { 
     var object: PFObject = self.items[indexPath.row] as PFObject 
     let alert : UIAlertView = UIAlertView(title: "Item deleted from cart!", message: "", delegate: self, cancelButtonTitle: "Dismiss") 
     alert.show() 

     object.deleteInBackgroundWithBlock({ (succeed, error) -> Void in 

      self.tableView.reloadData() 

     }) 
    } 
} 
+0

是的,你需要證明代碼上面這一行。在試圖添加或刪除行的地方顯示相關的代碼。 – rmaddy

+0

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/ManageInsertDeleteRow/ManageInsertDeleteRow.html –

+0

您從不更新'self.items'。除了從Parse中刪除對象外,還需要從數組中刪除對象。 – rmaddy

回答

0

嘗試tableView.reloadData()

你需要調用該方法適用於iOS在您的數據源再次外觀和渲染的tableView。

+0

如果您只是添加/刪除一行或兩行,調用'reloadData'是矯枉過正。 – rmaddy

+1

也許:self.tableView.reloadRowsAtIndexPaths(modifiedRows as [AnyObject],withRowAnimation:UITableViewRowAnimation.Automatic) –

+0

我加了我的代碼,讓我知道你是否有任何想法。 – Mike

1

您正在從Parse中刪除該項目,但是您並未從self.items陣列中刪除該項目,該項目可能是您的表格視圖的數據源。 self.items陣列可能是從Parse的viewDidLoadviewWillAppear方法初始化的,這就是爲什麼當你回到屏幕時看到它更新的原因。只是一個猜測。

0
 items.removeAtIndex(indexPath.row) 

不得不添加的object.deleteInBackgroundWithBlock

0
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
    if editingStyle == .Delete { 
     var object: PFObject = self.items[indexPath.row] as PFObject 
     let alert : UIAlertView = UIAlertView(title: "Item deleted from cart!", message: "", delegate: self, cancelButtonTitle: "Dismiss") 
     alert.show() 

     object.deleteInBackgroundWithBlock({ (succeed, error) -> Void in 

     self.items.removeAtIndex(indexPath.row) 
     self.tableView.reloadData() 

     }) 
    } 
}