【发布时间】:2014-04-30 20:34:13
【问题描述】:
在我的应用程序中(使用 Storyboard 仅供参考)我有一个包含 tableView 的 viewController。我的 viewController 访问一个 API 并返回我的 tableView 应该填充的项目数组。问题是,成功检索数组后,reloadData 方法不会触发对 cellForRowAtIndexPath 的调用。我已经正确设置了委托和数据源,但仍然没有运气。这是我的代码:
在我看来DidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView = [[UITableView alloc]init];
self.tableView.dataSource = self;
self.tableView.delegate = self;
[[CCHTTPClient sharedClient] getItemsWithSuccess:^(NSArray *items) {
self.items = items;
[self.tableView reloadData];
} failure:^(NSError *error) {
}];
}
还有我的 numberOfRowsInSection:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.items count];
}
我还发现,如果我在之前的 VC 上进行了 API 调用,并在 viewController 被推送之前设置了 viewController 的项目数组,那么表格会正确填充。真的不确定这里发生了什么。任何帮助将不胜感激!
【问题讨论】:
-
您确定
items不是nil并且至少包含一个值吗?另外,一定要在主线程上调用reloadData。 -
@rmaddy 是的,我在两者上都设置了断点。
items包含一个值,就在重新加载表之前(在第一个线程上)
标签: ios objective-c uitableview uiviewcontroller