UIButton в UITableViewCell равен нулю

У меня возникла проблема с UIButton в UITableViewCell. Я создал пользовательскую ячейку tableview в раскадровке, используя ячейку прототипа. Есть две кнопки, и я установил для них тег. При первом отображении табличного представления все отображается правильно, но если я прокручиваю или обновляю данные и вызываю reloadData в табличном представлении, оно обновляется неправильно.

Код:

- (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]; вызывается для каждой видимой строки, все правильно, но если я прокручиваю или перезагружаю представление, кнопка равна нулю? Почему? Получение метки таким же образом работает и отображается правильно. Как я могу изменить метку кнопок в ячейке?

С уважением

/Фредрик


person jymdman    schedule 19.01.2013    source источник


Ответы (1)


Быстрое предположение: я вижу, вы сбрасываете значение «тега» кнопок, которое вы используете для ссылки на него. Таким образом, вы больше не можете получить его (после изменения) со значением 104 (после первого создания теперь это 1 и 2)

[button setTag:1];

так что вы не получите его в следующий раз через

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

Я предполагаю, что ячейка не освобождается, и поэтому значение этого тега остается. Может быть, это решит это.

person ins0m    schedule 19.01.2013
comment
Да!! Это действительно была проблема! :) Не знал, что эти теги одинаковы... СПАСИБО!! - person jymdman; 19.01.2013