2013-11-09 2 views
0

Я использую этот код для изменения UIButton в моих UITableView. Проблема в том, что при прокрутке кнопки таблицы меняются без какой-либо причины.UIButton change in custom cell

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setFrame:CGRectMake(232, 88, 78, 24)]; 

if([[array objectAtIndex:(indexPath.row)] isEqualToString:@"0"]) 
    [button setImage:[UIImage imageNamed:@"pic1"] forState:UIControlStateNormal]; 
else 
    [button setImage:[UIImage imageNamed:@"pic2"] forState:UIControlStateNormal]; 

[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
[Cell.contentView addSubview:button]; 

Это buttonClicked: метод:

-(void)buttonClicked:(id)sender 
{ 
    CGPoint touchPoint = [sender convertPoint:CGPointZero toView:self.myTableView]; 
    NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:touchPoint]; 
    UIButton *button = (UIButton *)sender; 
    if([[array objectAtIndex:indexPath.row] isEqualToString:@"0"]) 
    { 
     [button setImage:[UIImage imageNamed:@"pic2"] forState:UIControlStateNormal]; 
     [array replaceObjectAtIndex:indexPath.row withObject:@"1"]; 
    } 
    else 
    { 
     [button setImage:[UIImage imageNamed:@"pic1"] forState:UIControlStateNormal]; 
     [array replaceObjectAtIndex:indexPath.row withObject:@"0"]; 
    } 
} 
+0

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

ответ

1

Это потому, что ваша ячейка повторного использования. Попробуйте вместо этого:

UIButton *button; = (UIButton *) [cell viewWithTag:34]; 
if (!button) { 
button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setFrame:CGRectMake(232, 88, 78, 24)]; 
button.tag = 34; 

if([[array objectAtIndex:(indexPath.row)] isEqualToString:@"0"]) 
    [button setImage:[UIImage imageNamed:@"pic1"] forState:UIControlStateNormal]; 
else 
    [button setImage:[UIImage imageNamed:@"pic2"] forState:UIControlStateNormal]; 

[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
[Cell.contentView addSubview:button]; 
} 
+0

все еще не работает, я нажал кнопку 1, прокручивая вниз, кнопку5 и кнопку6 изменился на pic2. прокрутка вверх, кнопка1 изменена на pic1. – user2755038

+0

Я сделал опечатку, снова попробуйте код :) – 7c9d6b001a87e497d6b96fbd4c6fdf

+0

извините, все та же проблема. – user2755038