我有一个列表视图控制器,该控制器具有一个从Yelp获取其数据的表。我有一个名为“ YelpObject.h / m”的单独类,该类完成了从Yelp API收集Yelp数据的所有工作。我还使YelpObject成为一个单例。我在ListViewController的init方法中初始化单例。
-(id)initWithPlace:(NSString*)city{
self=[super init];
if(self){
[self setCityName:city];
[[YelpObject sharedYelpObject] initializeYelpWithLocation:city term:@"Hotels"];
[[YelpObject sharedYelpObject] makeConnectionsToYelp];
}
return self;
}
现在采用以下方法:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [[[YelpObject sharedYelpObject] names] count];
}
names是一个NSMutableArray,其中包含Yelp API中排名前20位的酒店名称。当我尝试从“ YelpObject.m”中打印名称的内容时,它具有所需的数据。
但是这里的问题是,当“ makeConnectionsToYelp”函数获取其数据时,上述方法和所有表数据源方法都将被调用。这使表格始终显示零行。
我不知道如何确保仅在方法调用之后才调用表数据源方法
[[YelpObject sharedYelpObject] makeConnectionsToYelp];
返回。
我不知道回调方法是否可以帮助您。我是iOS编程的新手,非常感谢您的帮助。
最佳答案
做这样的事情:
-(id)initWithPlace:(NSString*)city{
self=[super init];
if(self){
[self setCityName:city];
[[YelpObject sharedYelpObject] initializeYelpWithLocation:city term:@"Hotels"];
dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(dispatchQueue, ^(void)
{
[[YelpObject sharedYelpObject] makeConnectionsToYelp];
//NSLog data returned to check.
//may be you can add a activity indicator to show loading.
dispatch_sync(dispatch_get_main_queue(), ^{
//reload your table view here.
[tableview reloadData];
//remove activity indicator if added.
});
});
return self;
}
关于ios - 使用网址中的动态数据更新UITableView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15858342/