2012-12-20 57 views
1

繼續我的最後一個問題,我有一個tableview填充2 NSMutableArrays,2節和2節標題,所有這些工作正常。如何將數據從一個陣列移動到另一個陣列?使用UITableView

incompleteItems = [NSMutableArray arrayWithObjects: @"Item 1", @"Item 2", @"Item 3"... , nil]; 

completeItems = [NSMutableArray arrayWithObjects: nil]; 

我已經設置它,以便當用戶刷卡的權利,從披露的細胞附件更改復​​選標記,然後滑動到左側,從變化勾選披露的時候。手勢通過使用handleSwipeLeft/Right方法來實現。

我想要做的是,當用戶向右滑動時,來自incompleteItems數組的項目被移動到completedItems數組中,從而將項目從「不完整」部分移動到「完成」部分。

什麼是最好的方式來實現這樣的事情?我的經驗有限,所以這在我的知識範圍之外。

任何幫助一如既往的讚賞。

回答

1

您可以簡單地將對象從一個數組添加到另一個數組,然後立即將其刪除。

-(void)incompleteToCompleteAtIndex:(NSUInteger)index 
{ 
    [complete addObject:[incompleteItems objectAtIndex:index]]; 
    [incompleteItems removeObjectAtIndex:index]; 
} 

-(void)completeToIncompleteAtIndex:(NSUInteger)index 
{ 
    [incompleteItems addObject:[complete objectAtIndex:index]]; 
    [complete removeObjectAtIndex:index]; 
} 

因爲這隻會發生作爲UI操作我認爲這會發生在主線程上會有什麼理由爲鎖定的結果。

+0

+1 this。您還需要重新加載tableview,以便調用「rowForIndexPath」方法(我認爲這就是所謂的),並返回新對象。 您還必須考慮移動選定的tableview行,這意味着用戶必須首先選擇一行。 – dmoss18

+0

感謝喬,儘管這些方法非常有意義,但我不確定如何將它們放入。我猜我需要一些如何獲得先被滑過的單元格?或者我錯過了這個觀點? :S @ dmoss18會是[self.tableView reloadData]在cellForRowAtIndexPath下? – mattFllr

0

你需要一個不錯的動畫?退房:deleteRowsAtIndexPaths:withRowAnimation:insertRowsAtIndexPaths:withRowAnimation:。確保你用beginUpdatesendUpdates包裝這些電話。

我不知道一個簡單的方法來將單元格從一個tableView移動到另一個tableView。我可以想象一種方法,需要您手動執行3步動畫,刪除單元格(並將其添加到浮動在整個視圖層次結構前的新視圖中),將新視圖移動到目標位置(可以需要做你自己的數學來確定目標的屏幕座標),最後再添加一個動畫。您可以使用一個完全透明的虛擬單元格,並在動畫的第一部分和最後一部分中將其交換/放入,以便爲tableview提供一些東西來保存傳輸的單元格的位置。

相關問題