2013-06-08 4 views
0

Я хочу, чтобы добавить кнопку обновления бара в моем контроллере зрения я положил в viewdidload() этого код:обновить таблицу в режиме управления с помощью кнопки бара обновления

UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshTable)]; 
self.navigationItem.leftBarButtonItem = refreshButton; 

и refreshtable функции является:

- (void) refreshTable 
{ 
    [self.tableView reloadData]; 

    NSLog(@"table is refreshing ...."); 
} 

это скриншот кнопки обновления: enter image description here

, но он не работает, ш все я добавляю что-то еще в функцию refreshtable?, представление таблицы не обновляется!, сообщение «table is refreshing ....» появляется каждый раз, когда я нажимаю кнопку обновления, но таблица не загружает новые данные!

при освежении, могу ли я иметь этот значок где-нибудь? enter image description here

Если бы я имел два вида таблицы, на мой взгляд контроллера, и я хочу, когда я нажимаю на кнопку обновления, только в первой таблице будет перезагружен,

enter image description here

я поставил тот же ты код, который вы предложили, но он здесь не работает! должен ли я сделать что-то еще?

+2

В чем проблема? –

+0

Извините, я только что редактировал – CarinaM

+0

Измените журнал на NSLog (@ "таблица (% @) обновляется ....", self.tableView); и посмотрите, что он говорит. – Wain

ответ

0

Этот вопрос вы добавили данные выборку логики в вашем viewDidLoad (в соответствии с вашими комментариями).

Метод viewDidLoad будет вызываться при загрузке представления. Он не будет вызываться, если вы не отклоните представление и не представите его снова (это не будет призыв, если вы вызываете reloadData, это просто для перезагрузки UITableView).

Когда вы вызываете reloadData, источник данных по-прежнему имеет старые данные, он не обновляется.

Так реализовать метод refreshTable как:

- (void) refreshTable 
{ 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://....../fastnews.php"]]; 
     [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES]; 
    }); 
} 

-(void)fetchedData:(NSData *)responseData 
{ 
    NSError *error; 
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 
    fastResults = [json objectForKey:@"nodes"]; 
    [self.tableView reloadData]; 
} 
+0

Большое спасибо, он отлично работает :) – CarinaM

+0

, пожалуйста, перед тем как уйти, у вас есть идея, как я могу отобразить значок обновления (чтобы пользователь знал, что просмотр освежает), проверьте экран выше – CarinaM

+0

пожалуйста, вы можете ответить на мой вопрос! – CarinaM

0

попробуйте это.

[self.tableView beginUpdates]; 
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows] 
      withRowAnimation:UITableViewRowAnimationNone]; 

[self.tableView endUpdates]; 
+0

где я его добавлю? – CarinaM

+0

- (void) refreshTable – Anil

0

Вам необходимо обновить метод dataSourceAaaay в refreshTable перед тем reload таблицы.

 Смежные вопросы

  • Нет связанных вопросов^_^