2016-08-15 68 views
2

我實現了搜索欄。當我只搜索食物時它工作正常。但是當我嘗試從搜索結果中編輯食物時,它只會改變搜索結果數組(foodSearching),但不會改變原始數組(食物)。所以當我編輯表格視圖時,我需要知道原始數組(食物)的索引路徑。有什麼幫助嗎?如何知道詳細表格視圖的原始細胞索引?

selectedIndexPath是「foodSearching」陣列(臨時數組顯示搜索結果)和「食品」陣列(原數組來保存所有的數據)

@IBAction func unwindToFoodList(sender: UIStoryboardSegue) { 
    if let sourceViewController = sender.sourceViewController as? FoodViewController, food = sourceViewController.food { 
     if let selectedIndexPath = tableView.indexPathForSelectedRow { 
      // Update an existing food. 
      if(isSearching){ 
       foodSearching[selectedIndexPath.row] = food 

       // foodSearching array is temporary.. 
       //need to find indexpath for foods array(original array)and update it as well...!! 

       tableView.reloadRowsAtIndexPaths([selectedIndexPath], withRowAnimation: .None) 

      }else{ 
       foods[selectedIndexPath.row] = food 
       tableView.reloadRowsAtIndexPaths([selectedIndexPath], withRowAnimation: .None) 
      } 

     } else { 
      // Add a new food. 
      let newIndexPath = NSIndexPath(forRow: foods.count, inSection: 0) 
      foods.append(food) 
      tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Bottom) 
     } 
     // Save the foods. 
     saveFoods() 
    } 
} 
+1

請勿編輯單​​元格。編輯你的數據模型,然後讓表重新加載。除非你的模型很大,否則重新加載整個表格。 – Gargoyle

回答

1

我不會使用indexPath的建議不同參考數據,因爲indexPath可以更改。如果您使用的是核心數據,我會建議objectID,但如果您不是,我會建議使用任何其他唯一可識別的信息並將其用作參考。創建下面的幫助函數可以幫助你實現:

func indexPath(forFoodWithID uniqueID: IDType) -> NSIndexPath? 
func foodID(forFoodAtIndexPath indexPath: NSIndexPath) -> IDType? 

我希望有幫助。