2014-10-08 21 views
0

我試圖用UICollectionView那是的UITableViewCell的一部分工作。的UITableView和UICollectionView更新新的細胞發出

因此,我面臨的問題,可見表格單元格的集合視圖工作正常,但是當我開始滾動表格和表格開始創建新的單元格,在不可見的地方,然後我面臨一些重複第一個表格單元格的行爲。例如,我在第一個表格視圖單元格中滾動了集合視圖,然後向下滾動了表格視圖,並且我看到新單元格與我的第一個單元格具有相同的狀態。你可以在這裏查看源代碼​​和video以瞭解我在說什麼。

回答

1

- [的UITableViewCell prepareForReuse]

1

有在CustomTableViewCell.h一個UICollectionView的屬性,並以Main.storyboard綁定。讓我們假設宣稱它是這樣的:

@property (strong, nonatomic) UICollectionView *collectionView; 

在ViewController.m變化的cellForRowAtIndexPath方法,所以它每次都重新加載內部UICollectionView它需要

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomTableViewCell"]; 

    [cell.collectionView reloadData]; 
    [cell.collectionView scrollRectToVisible:CGRectZero animated:NO]; 

    return cell; 
} 

當然,你需要在ViewController.m導入CustomTableViewCell.h文件。

+0

好的財產工程很好,即使我重新加載收藏查看它保持在同一位置,至於這種行爲沒有問題,所以據我瞭解我需要手動做。像設置初始狀態?也正如Dave寫的似乎prepareForUse它我在找什麼? – 2014-10-08 21:21:56

+0

您的單元格已經出隊,這意味着當您滾動以獲得更好的性能時,同一個單元格就會重新定位。想象一下,你的桌子視圖有1000行,但你可以同時看到其中的10個。內存上只有10行就足夠了。 因此,我編輯我的答案滾動到頂部的代碼。 – dadalar 2014-10-08 21:28:25

+0

我認爲你和Dave的回答很好。所以,如果我自己在委託方法或prepareForReuse的回調中設置它,只會有一個區別。但是,我認爲這是一個問題,例如,如果每次重置集合視圖,例如對於第一個包含我們滾動的集合視圖的單元格,我們也會在重新設置時重置位置。如果我需要行爲來保持第一個單元格來到狀態,但創建一個初始狀態的單元格。我將面臨重置問題,這將適用於每個新的單元。 – 2014-10-08 21:42:32

1

問題與UITableView的單元複用標識符,如果你的cellForRowAtIndexPath使用單小區標識這個問題會發生

每一行1.使用動態小區標識,這樣

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"CustomTableViewCell_%d",indexPath.row]]; 
} 

2.Store內容偏移爲在陣列中的每個集合視圖,和復位集合視圖內容偏移

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ...... 
    [cell.collectionView setContentOffset:scrollingPoint animated:NO]; 

    return cell; 
} 
+0

謝謝你的回答。我可以在故事板中使用它嗎? – 2014-10-09 17:40:32

+0

是的,當然,在您使用CustomTableViewCell_%d的示例中,將會執行 – NANNAV 2014-10-10 06:50:54

+0

,並且沒有問題以編程方式傳遞整數值。但是我應該在故事板中設置哪個標識符? – 2014-10-10 17:24:51