обновить UItableviewcell после нажатия кнопки для ячейки - PullRequest
0 голосов
/ 10 июня 2011

Здравствуйте, ребята, у меня есть ячейки в табличном представлении, но есть две разные UIB-кнопки, которые должны быть назначены ячейке. Зависит от того, есть ли имя файла с указанием этих ячеек в песочнице.

Я делаю это с помощью следующей функции при создании ячейки.

NSLog(@"%@", filepath);

        if ([[NSFileManager defaultManager] fileExistsAtPath:filepath]) 
        {
            [button setTitle:@"Submit" forState:UIControlStateNormal];
            [button addTarget:self action:@selector(SubmitData:) forControlEvents:UIControlEventTouchUpInside];
        }

        else
        {
            [button setTitle:@"Fetch" forState:UIControlStateNormal];
            [button addTarget:self action:@selector(FetchData:) forControlEvents:UIControlEventTouchUpInside];

        }

но дело в том, что когда я нажимаю кнопку Fetch и когда вызывается функция FetchData, я выбираю данные и сохраняю их в песочнице. Поэтому я хочу обновить кнопку «Отправить», поскольку теперь файл является их.

Итак, нужно ли что-то добавить в функцию FetchData, чтобы обновить кнопку ячейки для отправки,

Я пытался использовать [self.tableview reloaddata];

но не будет обновлять ячейку.

ПОЛНЫЙ КОД

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *FirstLevelCell= @"FirstLevelCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FirstLevelCell];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle  reuseIdentifier:FirstLevelCell] autorelease];
        NSDictionary * assignment = [assignments objectAtIndex:[indexPath row]];
        cell.textLabel.text= [NSString stringWithFormat:@"Riding Number is %@", [assignment objectForKey:@"Riding_Number"]];
        cell.detailTextLabel.text= [NSString stringWithFormat:@"Poll Number is %@",[assignment objectForKey:@"Poll"]];
        UIImage *buttonUpImage = [UIImage imageNamed:@"button_up.png"];
        UIImage *buttonDownImage = [UIImage imageNamed:@"button_down.png"];
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(0.0, 0.0, (buttonUpImage.size.width)*1.20,
                                  buttonUpImage.size.height);
        [button setBackgroundImage:buttonUpImage forState:UIControlStateNormal];
        [button setBackgroundImage:buttonDownImage forState:UIControlStateHighlighted];
          button.tag = [indexPath row];  
        NSString * filepath = [self dataFilePathwithFilename:[NSString stringWithFormat:@"%@_%@.plist",[assignment objectForKey:@"Riding_Number"],[assignment objectForKey:@"Poll"]]];


        if ([[NSFileManager defaultManager] fileExistsAtPath:filepath]) 
        {
            [button setTitle:@"Submit" forState:UIControlStateNormal];
            [button addTarget:self action:@selector(SubmitData:) forControlEvents:UIControlEventTouchUpInside];
        }

        else
        {
            [button setTitle:@"Fetch" forState:UIControlStateNormal];
            [button addTarget:self action:@selector(FetchData:) forControlEvents:UIControlEventTouchUpInside];

        }

        cell.accessoryView = button;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        return cell;
    }

    // Configure the cell...

    return cell;

}

1 Ответ

0 голосов
/ 19 июня 2011

установить закрытие } для if (cell == nil) сразу после cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:FirstLevelCell] autorelease];
в вашем комментарии говорится, где вы должны настроить ячейку! оператор if-not-nil предназначен только для creation !! после этого блока вам необходимо настроить ячейку (установить текст, кнопки, изображения, accessoryView, ...). Просто помните, что клетка может быть в ЛЮБОМ состоянии. Когда ячейка покидает видимую область (самая верхняя ячейка при прокрутке вниз), она будет помещена в пул, где вы снова извлекаете ее с помощью dequeueReusableCellWithIdentifier и настраиваете ее в соответствии с требуемым индексным путем (нижняя ячейка, которая скользит по экрану, когда вы прокрутите вниз).

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