2013-02-13 78 views
0

我正在爲使用UITableView的iPad應用程序創建類似佈局的網格(電子表格)。我得到了網格部分工作,但由於我動態地添加UILabels的單元格的可重用部分工作不正常。下面是代碼:UITableView GridLayout可重複使用的UITableViewCells問題

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

    Fund *fund = [funds objectAtIndex:[indexPath row]]; 

    float labelWidth = 1024/([columnNames count] -1); 

    for(NSString *columnName in columnNames) 
    { 
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, 0, labelWidth, 44)]; 

     label.backgroundColor = [UIColor clearColor]; 

     label.text = [fund valueForKey:columnName]; 

     x += label.bounds.size.width; 

     [cell addSubview:label]; 
    } 

    x = 0; 

    return cell; 
} 

結果:

enter image description here

+0

爲什麼不使用'UICollectionView'而不是創建多個'UITableView'實例 – 2013-02-13 21:07:12

+0

我沒有創建多個UITableView實例! – azamsharp 2013-02-13 21:09:32

+0

對不起,我錯了 – 2013-02-13 21:11:10

回答

1

你在每一個複用增加新的標籤。您應該只添加一次標籤,存儲對它們的引用(通常作爲自定義單元格子類的屬性),然後設置文本值。

您可能會發現在xib中定義自定義單元格並將標籤放置在那裏可以更容易地創建出口。您可以註冊該表以供表重用,它將根據需要創建或取消出隊。

+0

這是真的!但是我動態地創建了uilabels,所以這可以被其他視圖控制器重用,而不依賴於接口構建器和插座。但我會給那一槍!這將是最容易做到的! – azamsharp 2013-02-13 21:26:05

+0

在自己的筆尖中定義的單元格可以隨時隨地重複使用。 – jrturton 2013-02-13 21:32:23

+0

謝謝!如果我有不同的列有不同的列,那麼我是否需要創建5個不同的nib /自定義單元格。 – azamsharp 2013-02-13 21:34:52