2013-01-19 78 views
0

我在UITableViewCell中遇到一些UIButton問題。 我使用原型單元格在故事板中創建了一個自定義tableviewcell。 有兩個按鈕,我爲它們設置了一個標籤。 第一次繪製表視圖時,所有顯示都是正確的,但是如果我滾動或更新數據並在tableview上調用reloadData,則它不會更新正確。UITableViewCell中的UIButton是零

代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Moment Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];   
} 

NSLog(@"Cell: %@", cell); 

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
NSArray *row = [mMoment objectAtIndex:indexPath.row]; 

UILabel *label; 

label = (UILabel *)[cell viewWithTag:101]; 
label.text = [row objectAtIndex:0]; 

label = (UILabel *)[cell viewWithTag:102]; 
label.text = [NSString stringWithFormat:@"Koeff: %@",[row objectAtIndex:2]]; 


UIButton *button; 
NSString *btn_title; 

button = (UIButton *)[cell viewWithTag:104]; 

NSLog(@"Button: %@", button); 

[button setTag:1]; 
btn_title = [NSString stringWithFormat:@"%@", [row objectAtIndex:4]]; 
[button setTitle:btn_title forState:(UIControlState)UIControlStateNormal]; 
[button addTarget:self action:@selector(poangButtonClick:event:) forControlEvents:UIControlEventTouchUpInside]; 

NSLog(@"Row: %d, Poäng: %@", indexPath.row, btn_title); 

label = (UILabel *)[cell viewWithTag:103]; 
label.text = btn_title; 

button = (UIButton *)[cell viewWithTag:105]; 
[button setTag:2]; 
btn_title = [NSString stringWithFormat:@"%@", [row objectAtIndex:5]]; 
[button setTitle:btn_title forState:(UIControlState)UIControlStateNormal]; 
[button addTarget:self action:@selector(poangButtonClick:event:) forControlEvents:UIControlEventTouchUpInside]; 

return cell; 

}

首次button = (UIButton *)[cell viewWithTag:104];叫上每一個可見的行,一切是正確的,但如果我滾動或重裝認爲,按鈕是零? 爲什麼?以相同的方式檢索標籤,並正確顯示。 如何更改單元格中按鈕的標籤?

問候

/弗雷德裏克

回答

4

快速的猜測:我看你是重置您可以使用它來參考,它的按鈕「標籤」的價值。所以,你不能retrive它與價值104了(更換之後)(第一創作,現在是1後2)

[button setTag:1]; 

所以,你不會在下一次通過

button = (UIButton *)[cell viewWithTag:105]; 
得到它

我的假設是,單元格沒有被釋放,因此這個標籤值保持不變。也許這會解決它。

+0

是的!這確實是問題! :)沒有意識到那些標籤是一樣的......謝謝! – jymdman