正确设置numberOfRowsInSection

时间:2015-03-01 17:49:41

标签: ios objective-c uitableview

我有一个使用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在之前加载我们获得了网络数据,这有点令人困惑。

1 个答案:

答案 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和委托方法。 希望它有所帮助。