如何更改按下按钮的按钮上的图像重用

时间:2016-01-09 16:29:48

标签: ios uitableview cell

有一个问题。我只需按一下按钮即可添加到阵列和按钮以更改图像。 我是这样做的:

- (IBAction)addUserAction:(UIButton *)sender {

CGPoint touchPoint = [sender convertPoint:CGPointZero toView:self.tableView];

NSIndexPath *clickedButtonIndexPath = [self.tableView indexPathForRowAtPoint:touchPoint];

NSInteger row = clickedButtonIndexPath.row;

UserCell* selectedCell = [self.tableView cellForRowAtIndexPath:clickedButtonIndexPath];

NSString* login = selectedCell.loginLabel.text;

BOOL userIsExist = selectedCell.isExist;

for (QBUUser* user in self.users) {

    if ([login isEqualToString:user.login]) {

        if (!userIsExist) {

            [self.assistant.usersInCurrentChat addObject:user];

            userIsExist = YES;

            UIButton* button = self.buttons[clickedButtonIndexPath.row];

            [button setImage:[UIImage imageNamed:@"delete_icon_64x64.png"] forState:UIControlStateNormal];

            self.buttons[clickedButtonIndexPath.row] = button;

        } else{

            [self.assistant.usersInCurrentChat removeObject:user];

            userIsExist = NO;

            UIButton* button = self.buttons[clickedButtonIndexPath.row];

            [button setImage:[UIImage imageNamed:@"add_button_64x64.png"] forState:UIControlStateNormal];

            self.buttons[clickedButtonIndexPath.row] = button;


        }
    }
}

selectedCell.isExist = userIsExist;
}

我的cellForRowAtIndexPath代码:

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

UserCell* cell = [tableView dequeueReusableCellWithIdentifier:@"userCell1"];

if(!cell){

    cell = [[UserCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"userCell1"];

}

QBUUser* user = [self.users objectAtIndex:indexPath.row];

cell.loginLabel.text = [NSString stringWithFormat:@"%@", user.login];

NSInteger currentTimeInterval = [[NSDate date] timeIntervalSince1970];

NSInteger userLastRequestAtTimeInterval   = [[user lastRequestAt] timeIntervalSince1970];

// if user didn't do anything last 1 minute (60 seconds)
if((currentTimeInterval - userLastRequestAtTimeInterval) > 60){

    cell.statusImageView.image = [UIImage imageNamed:@"offline_icon_45x45.png"];

} else{

    cell.statusImageView.image = [UIImage imageNamed:@"online_icon_32x32.png"];

}

NSInteger row = indexPath.row;

if ([self.buttons[indexPath.row] isEqual:[NSNull null]]) {

    self.buttons[indexPath.row] = cell.button;

} else {

    cell.button = self.buttons[indexPath.row];

}

return cell;
}

但是细胞被重复使用了#34;我得到的结果如图my bug 我该如何解决这个问题?

0 个答案:

没有答案