0

我有一個應用程序使用NSFetchedResultsController從數據庫中獲取各種結果並將它們顯示在UITableViewCell中。出於藝術的原因,我總是希望交替的細胞是左右導向的,就像在Messages中的對話。上下滾動時保持UITableView中單元格的左/右位置

我目前使用的integer稱爲entryIndexPath,其遞增,然後在if語句中使用內cellForRowAtIndexPath確定電池是否應該向左或基於該整數是奇數還是偶數右對齊實現這一目標。

我的問題是,當滾動備份表時,這個左/右分配可能會感到困惑,剛剛滾動的單元格可能會在從頂部重新顯示時重新分配,因爲cellForRowAtIndexPath正在調用,計數器正在遞增。

我需要一個確定的方法來確保從FRC獲得一組新的結果時,左/右值的分配是正確和牢固的。我知道我需要在cellForRowAtIndexPath以外這樣做,但我很努力地看到我應該在應該這樣做。任何想法或建議?

編輯:我還要指出,我的託管對象目前沒有Left/Right變量或類似的東西,所以創建一個會很尷尬,重新創建大量的數據,等等。如果沒有這樣做的手段,這將是理想的。

回答

2

確保您明確設置每種行類型的單元格類型。我也建議這種替代方法從indexPath得到序列:

NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
NSUInteger position = [self.fetchedResultsController.fetchedObjects indexOfObject:object]; 
NSString *cellIdentifier = position % 2 ? @"RightCell" : @"LeftCell"; 
id cell = [self.tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
+0

明白了,謝謝。我必須對自定義單元格類型進行一些修改,並且有時會顯示來自「fetchedObjects」(混洗陣列)以外的數組的過濾結果,但現在所有工作都正在進行 - 謝謝! – Luke 2013-04-07 08:59:08

相關問題