У меня проблема с удалением UIButton из подкласса UITableViewCell.Эта кнопка добавляется, только если ячейка является первой в табличном представлении.Так что бывает, что эта кнопка может быть нулевой или может быть экземпляром класса UIButton.Более того, поскольку все эти ячейки имеют одинаковый идентификатор, может возникнуть ситуация, когда первая ячейка с кнопкой будет перемещена ниже.Затем мне нужно удалить эту кнопку.
Я делаю это таким образом:
if(callBtn != nil) {
[callBtn removeFromSuperview];
}
Однако, это вызывает сбой приложения.
Я думаю, что эту проблему можно решить, используя разные идентификаторы для первой и других ячеек, и, вероятно, это лучшее решение.Однако я хотел бы знать, что не так с этим кодом или о чем следует знать при удалении подпредставления из подкласса UITableViewCell.
@ EDIT: код, в котором создаются ячейки:
NSString *ident = @"HistoryCell";
HistoryItemCell *cell = (HistoryItemCell *)[tableView dequeueReusableCellWithIdentifier:ident];
// If there is no reusable cell of this type, create a new one
if (!cell) {
if(indexPath.row == 0) {
cell = [[[HistoryItemCell alloc] initWithStyle:UITableViewCellStyleDefault withCallBtn:YES reuseIdentifier:ident] autorelease];
} else {
cell = [[[HistoryItemCell alloc] initWithStyle:UITableViewCellStyleDefault withCallBtn:NO reuseIdentifier:ident] autorelease];
}
} else {
if(indexPath.row != 0) {
[cell removeCallBtn];
}
}
History *history = [[[Store defaultStore] allHistories] objectAtIndex:indexPath.row];
[cell setDataFromModel:history];
return cell;
Добавление кода кнопки:
if(withCallBtn == YES) {
callBtn = [[UIButton alloc] initWithFrame:CGRectZero];
callBtn.tag = CALL_BUTTON_TAG;
[callBtn addTarget:self action:@selector(callBtnAction:) forControlEvents:UIControlEventTouchUpInside];
// setting background, title, etc
[self.contentView addSubview:callBtn];
[callBtn release];
}
Привет, Адам