UITableViewCell не обновляется - PullRequest
       9

UITableViewCell не обновляется

0 голосов
/ 13 апреля 2009

Для каждой записи в ячейке табличного представления мне нужна кнопка справа, затем текст и снова кнопка слева. При событии нажатия кнопки мне нужно изменить текст (нажатие левой / правой кнопки) и удалить любую из кнопок в зависимости от условий текста. Я не могу удалить кнопки с помощью метода cellForRowAtIndexPath. Я попытался создать подкласс UITableViewCell и использовать метод -prepareForReuse, но я не могу сбросить ячейку. Есть идеи, как мне этого добиться? Или есть какой-нибудь способ сделать эту кнопку невидимой или может быть скрытой?

    NSString *CellIdentifier = [[NSString alloc] initWithFormat:@"Cell%d",indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}


[self.tableView clearsContextBeforeDrawing];
NSString *str = [listOfItems objectAtIndex:indexPath.row];

    cell.text = [listOfItems objectAtIndex:indexPath.row];
    cell.textColor = [UIColor blueColor];
    cell.font = [UIFont systemFontOfSize:14];

        UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];       
        UIImage *image = [UIImage imageNamed:@"Arrow_Right.png"];
        CGRect frame = CGRectMake(290, 5, image.size.width, image.size.height);
        button.frame = frame;   
        [button setBackgroundImage:image forState:UIControlStateNormal];
        button.backgroundColor = [UIColor clearColor];
        [button addTarget:self action:@selector(rightArrow_clicked:) forControlEvents:UIControlEventTouchUpInside];
        [cell addSubview:button];

        UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];      
        UIImage *img = [UIImage imageNamed:@"Arrow_Left.png"];
        CGRect frame1 = CGRectMake(5, 5, img.size.width, img.size.height);
        button1.frame = frame1;
        [button1 setBackgroundImage:img forState:UIControlStateNormal];
        button1.backgroundColor = [UIColor clearColor];
        [button1 addTarget:self action:@selector(leftArrow_clicked:) forControlEvents:UIControlEventTouchUpInside];
        [cell addSubview:button1];

    if([str isEqual:@" abc  "])
        [button setEnabled:NO];
    if([str isEqual:@" pqr "])
        [button1 setEnabled:NO];

1 Ответ

1 голос
/ 13 апреля 2009

То, что вы хотите сделать, это подкласс UITableViewCell и добавить подпредставления в методе init, чтобы они добавлялись только один раз.

Скорее всего, вы добавляете подпредставления в повторно используемую ячейку, в которой, скорее всего, уже есть кнопки от предыдущего использования. Кроме того, вы можете установить кнопки «невидимыми» следующим образом:

[button setHidden:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...