我想在视图控制器中添加一个刷新条按钮
我输入了viewdidload()
这段代码:
UIBarButtonItem *refreshButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshTable)];
self.navigationItem.leftBarButtonItem = refreshButton;
,刷新功能是:
- (void) refreshTable
{
[self.tableView reloadData];
NSLog(@"table is refreshing ....");
}
这是刷新按钮的屏幕截图:
但它不起作用,我是否应该在刷新功能中添加其他东西?,表视图不刷新!,每次点击刷新按钮时都会出现“table is refresh ....”消息,但是表格没有加载新数据!
刷新时,我可以在某处找到这个图标吗?如果我在视图控制器中有两个表视图,并且我想在单击刷新按钮时,只需要重新加载第一个表,
我把你建议的代码与你的代码相同,但它在这里不起作用!我应该做点什么吗?
答案 0 :(得分:0)
试试这个。
[self.tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
答案 1 :(得分:0)
问题是您在viewDidLoad
中添加了数据提取逻辑(根据您的评论)。
加载视图时将调用viewDidLoad方法。它将不会被调用,除非您关闭视图并再次显示它(如果您调用reloadData
它只是为了重新加载UITableView
而不是calles。)
当您致电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];
}
答案 2 :(得分:0)
您需要在dataSourceAaaay
表之前的refreshTable
方法中更新reload
。