2013-07-11 178 views
0

我有一個名爲totalWins的數組,其中有一個名爲winningNumbers的數組。裏面有70個我需要在UITableView單元格中顯示的數字。 我已經分類了UITaableViewCell並創建了一些UITextField網點。 這樣做的好老式的方式:使用標籤和單元格重用

NSArray *winningNumbers = [[_currentSearchResults objectAtIndex:indexPath.row]objectForKey:@"winningNumbers"]; 
cell.txtFld1.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:0]]; 
cell.txtFld2.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:1]]; 
.... 
.... 

偉大的作品。我試圖挽救了一些編碼時間,這樣做:(塞汀了當然的文本框的標籤後)

for(int i=0;i<70;i++) 
    { 
     UITextField *tempField = (UITextField *) [self.view viewWithTag: 777+i]; 

     tempField.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:i]]; 
    } 

的問題是,因爲細胞的再利用滾動時的數字搞砸表視圖。 cell.txtFld1.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:0]]; 70次,完成上述操作的首選方法是什麼?

+0

如果發佈整個的cellForRowAtIndexPath方法它可以幫助.. – Eyal

回答

1

使用[cell.contentView viewWithTag:777 + i] instead self.view。你的解決方案是好的。

+0

改變了代碼爲'爲(INT I = 0; I <17; i ++在) { 的UITextField * tempField =(的UITextField *)[cell.contentView viewWithTag:777 + i]; tempField.text = [NSString stringWithFormat:@「%@」,[winningNumbers objectAtIndex:i]]; }'但是我仍然得到相同的壞結果 – Segev

+0

很難理解哪裏有麻煩,何時只看代碼段。此代碼之外的問題有些。檢查標記值已設置。當你返回表格的單元格時,瀏覽所有UITextField並清除文本。也許你使用錯誤的限制17,並且必須使用70.對不起,我的英語。 – Sk0prion

0

子類UITableViewCell並創建一個UITextFields數組。

@interface YourCell: UITableViewCell 
@property (nonatomic, readonly) NSArray *textfields; 
@end 

存儲對您的文本字段在伊娃備份textfields屬性的引用。

然後,你可以做

NSArray *textfields = cell.textfields; 
for (int i = 0; i < textfields.count; i++) 
{ 
    UITextfield *field = [textfields objectAtIndex:i]; 
    // set textfield's text 
} 
+0

我已經創建了UITableViewCell的子類。你介意給我一些關於如何做到這一點的細節? – Segev

+0

添加了一小段代碼來回答。 – Kreiri

+0

文本字段引用在哪裏?編譯器如何知道我想輸入數據的文本位置是什麼? – Segev

0

只是刪除所有已創建的文本框,並創建它們各一次。

for(UIView *view in cell.contentView.subviews) 
{ 
    [view removeFromSuperView]; 
} 
+0

所有文本字段位於單元格上的不同位置。我怎樣才能每次創建它們? – Segev

+0

什麼是removeFromSuperView與它有關?謝謝 – Segev

+0

據我所知你是動態地將它們添加到單元格?如果不是,那麼當然它不會幫助 – nerowolfe

1

我還沒有試過,但它可能工作:

for (id subview in [cell.contentView subviews]) { 
    if([subview isKindOfClass:[UITextField class]]) { 
     UITextField *textfield = (UITextField*)subview; 
     textfield.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:(textfield.tag-777)]]; 
    } 
} 

希望這有助於。

+0

尼斯解決方案,但我得到相同的變化\單元格中的空白文本。 – Segev

+0

請參閱我的編輯。這應該工作,如果您的標籤設置正確。 – Nameet

相關問題