1
我有一個表視圖,它顯示來自Parse的對象。我有一個模塊提供另一個視圖控制器來添加新對象的按鈕。當選擇表格視圖中的一行時,它以模態方式呈現一個視圖控制器來顯示對象信息並允許編輯該對象。我遇到的問題是,當我添加一個新項目或編輯一個項目,然後關閉模式控制器時,表格視圖重新加載並顯示數據多次。我做錯了什麼?表視圖數據在關閉模態視圖控制器後多次加載
這些函數在呈現視圖控制器(我的表視圖控制器)。顯然這個問題必須在didDismissViewController()中。
func getItems() {
// activityIndicator?.startAnimating()
let query = PFQuery(className: "Items")
query.whereKey("user", equalTo: PFUser.currentUser()!)
query.whereKey("collection", equalTo: self.title!)
query.orderByAscending("item")
query.limit = limit
query.skip = skip
query.findObjectsInBackgroundWithBlock({
(objects, error) -> Void in
if error == nil {
if let objects = objects as [PFObject]! {
for object in objects {
self.itemNames.append(object["item"] as! String)
self.objectID.append(object.objectId!)
self.itemUPC.append(object["upc"] as! String)
self.model.append(object["model"] as! String)
self.pricePaid.append(object["pricePaid"] as! String)
// self.imagesArray.append(object["images"])
if object["images"] == nil {
self.imagesArray.append(nil)
} else {
self.imagesArray.append(object["images"])
}
}
}
// print(self.imagesArray)
/*
if objects!.count == self.limit {
self.skip += self.limit
self.getCollections()
}
*/
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
// self.activityIndicator!.stopAnimating()
print(self.itemNames)
}
} else {
var errorString = String()
if let message = error!.userInfo["error"] {
errorString = message as! String
}
print(errorString)
}
})
}
func createItem() {
let createVC = CreateItemViewController(nibName: "CreateItemViewController", bundle: nil)
let navController = NavController(rootViewController: createVC)
navController.modalPresentationStyle = .OverCurrentContext
createVC.collectionString = self.title!
NSNotificationCenter.defaultCenter().addObserver(self, selector: "didDismissViewController", name: "ItemAdded", object: nil)
self.presentViewController(navController, animated: true, completion: nil)
}
func didDismissViewController() {
objectID.removeAll()
itemNames.removeAll()
itemUPC.removeAll()
pricePaid.removeAll()
model.removeAll()
imagesArray.removeAll()
itemImages.removeAll()
getItems()
}
此功能在您輸入項目的詳細信息,你要創建的解析對象的模態呈現視圖控制器。
func done() {
// Save the item data...
if itemImageView.image != nil {
let pictureData = UIImageJPEGRepresentation(itemImageView.image!, 0.05)
image = PFFile(name: "img", data: pictureData!)
} else {
image = nil
}
let newItem = PFObject(className: "Items")
newItem["item"] = itemNameTextField.text
newItem["upc"] = upcTextField.text
newItem["model"] = modelTextField.text
newItem["pricePaid"] = pricePaidTextField.text
newItem["user"] = PFUser.currentUser()
newItem["collection"] = collectionString
newItem["images"] = itemImages
newItem.saveInBackgroundWithBlock({
(succeeded, error) -> Void in
if error == nil {
NSNotificationCenter.defaultCenter().postNotificationName("ItemAdded", object: nil, userInfo: nil)
self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
} else {
var alert: UIAlertController?
let errorOK = UIAlertAction(title: "OK", style: .Default, handler: {
(action) -> Void in
alert?.dismissViewControllerAnimated(true, completion: nil)
})
var errorString = String()
if let message = error!.userInfo["error"] {
errorString = message as! String
}
alert = UIAlertController(title: "Error", message: errorString, preferredStyle: .Alert)
alert!.addAction(errorOK)
self.presentViewController(alert!, animated: true, completion: nil)
}
})
}
這似乎已經成功了。謝謝。 – raginggoat