【发布时间】:2015-09-09 08:11:55
【问题描述】:
我有一个 tabBarView,它有两个 tableViews。这些tableViews 中的每一个都将代表来自远程服务器的一些消息。我想在调用 tableViewController's init 方法时填充 tableView's 数据源。所以我把需要的网络操作放在init 方法中。我的init 方法是这样的:
- (instancetype) init{
self = [super init];
[NewsManager fetch:10 remoteNewsOfLanguage:@"fa" withOffsett:1 andCompletionHandler:^(NSMutableArray *news) {
self.newsList = news;
}];
self.tabBarItem.title = @"my title";
return self;
}
newsList 是一个数组,保存从服务器加载的新闻。
但是当我运行我的项目时,tableViewController's 方法的调用顺序如下:
tableViewController's init方法被调用并完成(但尚未调用完成处理程序块)调用
tableViewController'sviewDidLoad方法(tableViewController添加到tabBarView'sviewControllers数组时调用)-
tableViewController's委托方法tableView:numberOfRowsInSection被调用 - 网络操作的
completionHandler块被调用,newsList 数组被设置为从服务器检索到的新闻
所以我的问题是,在填充我的 newsList 数组之前,方法 tableView:numberOfRowsInSection 被调用,所以我的 tableView 没有填充任何新闻。我应该如何解决这个问题?
谢谢
【问题讨论】:
标签: ios objective-c uitableview objective-c-blocks