2016-01-15 70 views
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) 
      } 
     }) 
    } 

回答

1

看來你是在添加你的觀察者,但並沒有刪除它們。

+0

這似乎已經成功了。謝謝。 – raginggoat

相關問題