2010-10-08 3 views
0

Я пытаюсь добавить кнопку в uitableviewcell, и я просто не могу заставить ее работать над любыми предложениями, что я делаю неправильно?iphone sdk: Как добавить кнопку в uitableviewCell?

checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[checkButton setFrame:CGRectMake(0, 0, 30, 30)]; 
[checkButton setBackgroundImage:[[UIImage imageNamed:@"checked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal]; 
[checkButton setBackgroundImage:[[UIImage imageNamed:@"checked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateSelected]; 

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

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    [cell addSubview:checkButton]; 

} 
NSArray *tempArray = [[exerciseNames objectAtIndex:indexPath.section] objectForKey:@"rowValues"]; 
[cell addSubview:checkButton]; 
cell.textLabel.adjustsFontSizeToFitWidth = YES; 
cell.textLabel.text = [NSString stringWithFormat:@"%@ (%@)", [[tempArray objectAtIndex:indexPath.row] objectForKey:@"full"], [[tempArray objectAtIndex:indexPath.row] objectForKey:@"short"]]; 

// Set up the cell... 

return cell; 
} 

ответ

1

Вам необходимо создать новый экземпляр кнопки для каждой ячейки, вы не сможете использовать общий экземпляр. Вид может быть ТОЛЬКО в одном месте за раз.

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

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 
UIButton* checkButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[checkButton setFrame:CGRectMake(0, 0, 30, 30)]; 
[checkButton setBackgroundImage:[[UIImage imageNamed:@"checked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal]; 
[checkButton setBackgroundImage:[[UIImage imageNamed:@"checked.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateSelected]; 
[cell addSubview:checkButton]; 

[checkButton release]; 

NSArray *tempArray = [[exerciseNames objectAtIndex:indexPath.section] objectForKey:@"rowValues"]; 

cell.textLabel.adjustsFontSizeToFitWidth = YES; 
cell.textLabel.text = [NSString stringWithFormat:@"%@ (%@)", [[tempArray objectAtIndex:indexPath.row] objectForKey:@"full"], [[tempArray objectAtIndex:indexPath.row] objectForKey:@"short"]]; 

// Set up the cell... 

return cell; 
} 

Таким образом, кнопка добавить на ячейку & освободить свою собственную память, так не проблема утечки памяти

Также вы можете добавить кнопку в ячейке contentview, а не в клетке

например.

[cell.contentView addSubview: showButton]; 
Смежные вопросы