UITableView использует NSmutableArray для отображения динамического контента

StackOverflow https://stackoverflow.com/questions/1840160

Вопрос

Давно ищу решение, но пока безуспешно, возможно, кто-то здесь сможет мне помочь.

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

Всякий раз, когда я получаю информацию от веб-сервиса, мой AppDelegate отправляет уведомление.Мой UITableView регистрируется для получения определенных видов информации, которую я собираюсь показать в UITableView.

Метод initWithStyle UITableViewController содержит следующий код:

- (void)addContact:(NSNotification *)note {
    NSLog(@"%@", [note object]);

    NSString *message = (NSString *)[note object];
    NSString *name = [[message componentsSeparatedByString:@":"] objectAtIndex:2];

    contact = name;
    [array addObject:contact];
}   

- (void)viewDidLoad {
    [super viewDidLoad];

    array = [[NSMutableArray alloc] initWithObjects:@"test1", @"test2", nil];

    tv.dataSource = self;
    tv.delegate = self;

    self.tableView = tv;
}

Массив в AddContact содержит данные, отображаемые в TableView.Все данные я вручную добавляю в массив во ViewDidLoad:будет показано в таблице, но этого не происходит с данными, добавленными в AddContact:метод.

Кто-нибудь понял, что я делаю неправильно?

Это было полезно?

Решение

Обновление происходит в основном потоке?Вы можете использовать такую ​​функцию обновления, чтобы убедиться в этом.

- (void)refresh {
if([NSThread isMainThread])
{
    [self.tableView reloadData];
    [self.tableView setNeedsLayout];
    [self.tableView setNeedsDisplay];
}
else 
{
    [self performSelectorOnMainThread:@selector(refresh) withObject:nil waitUntilDone:YES];
}

}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top