Очистить tableView на reloadData не работает? - PullRequest
2 голосов
/ 16 декабря 2010

Я программирую простое внутреннее приложение по экономике для нашей компании, но я столкнулся с некоторыми проблемами. Я заполняю UITableView информацией из динамически генерируемых объектов, например так:

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }
Payments *project = [appDelegate.projects objectAtIndex:indexPath.row];

if([project.parentProject isEqualToString:bottomTabBar.selectedItem.title]) {
    NSLog(@"%@ är lika med %@ index: %d",project.parentProject, bottomTabBar.selectedItem.title, indexPath.row);
    // Configure the cell...
    NSMutableString *changeInValue = [[NSMutableString alloc] initWithFormat:@"%d",[[project.amountsek objectAtIndex:0] intValue]-[[project.amountsek objectAtIndex:1] intValue]];
    if([changeInValue intValue] >= 0) {
        [changeInValue insertString:@"+" atIndex:0];
        cell.imageView.image = [UIImage imageNamed:@"up.png"];
    } else {
        cell.imageView.image = [UIImage imageNamed:@"down.png"];
    }

    NSMutableString *foreignCurrency = [[NSMutableString alloc] initWithString:@""];
    if(![project.currency isEqualToString:@"SEK"]) {
        [foreignCurrency appendFormat:@" - %@%d",project.currency,[[project.payments objectAtIndex:0] intValue]];
    }

    NSString *detailString = [[NSString alloc] initWithFormat:@"%@%d (%@)%@",@"SEK",[[project.amountsek objectAtIndex:0] intValue],changeInValue, foreignCurrency];

    [changeInValue release];
    [foreignCurrency release];

    cell.textLabel.text = project.name;
    cell.detailTextLabel.text = detailString;

    [detailString release];
}

project = nil;

return cell;}

И все работает как шарм! Тем не мение! Когда я нажимаю другую кнопку tab, я хочу, чтобы она перезагрузила таблицу и отображала только соответствующие элементы! (Соответствие работает отлично, журнал распечатывает все правильно) Хотя старые ячейки таблицы не очищаются до добавления новых.

Вот код для вкладки перезагрузки:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"Tab clicked: %d", item.tag);
[sourcesTable reloadData];
}

Как мне это решить? Я новичок в программировании для iPhone, и я действительно мог бы использовать некоторую помощь.

1 Ответ

0 голосов
/ 30 ноября 2012

Пожалуйста, позвоните [sourcesTable reloadData];в методе viewWillAppear этого ViewController.m Этот вызов каждый раз, когда появляется ваше представление.

...