我有一个使用AFNetworking
加载数据的应用程序,解析收入JSON数据并填充表格。我使用不同的类来管理JSON并填充UITableView
。
我需要正确设置行数。问题是,在我们从网上获取任何数据之前,我猜它的方法加载太早。我试过以下:
-(NSInteger)numberOfElements{
return [self.dataDictArray count];
}
然后:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.handler numberOfElements];
}
当handler是类的实例类型时,它处理JSON并声明-(NSInteger)numberOfElements
。
如何在这种情况下设置正确数量的元素?显然tableView
在之前加载我们获得了网络数据,这有点令人困惑。
答案 0 :(得分:1)
一种方法是:
在AFNetworking get方法的成功块中触发通知
#define NOTIFICATION_NAME @"LoadNotification"
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_NAME object:self];
在UITableViewController子类的viewDidLoad方法中,将类设置为通知的观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedLoadingNotification:) name:NOTIFICATION_NAME object:nil];
收到加载通知'方法设置委托和datasourceDelegate
-(void)receivedLoadingNotification:(NSNotification *) notification
{
if ([[notification name] isEqualToString:NOTIFICATION_NAME])
{
[self.tableView setDelegate:self];
[self.tableView setDataSource:self];
}
}
因此,当从AFNetworking成功加载JSON数据时,控制器将仅调用dataSource和委托方法。 希望它有所帮助。