为啥我的 UITableView 不显示数据?
Posted
技术标签:
【中文标题】为啥我的 UITableView 不显示数据?【英文标题】:Why won't my UITableView show the data?为什么我的 UITableView 不显示数据? 【发布时间】:2010-07-08 18:28:57 【问题描述】:这是我的问题。我在标签栏应用程序中有一个屏幕,显示搜索栏和 UITableView。当您第一次打开选项卡时, UITableView 是空的。输入搜索后,iPhone 会根据查询获取并解析 XML。
所有这些都运行良好。我将 XML 数据添加到应该填充表的基础数组中。我已经验证该数组包含数据,并且不为空。搜索后 UITableView 保持空白。有什么帮助吗?
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
//test line
NSLog(@"%@",searchBar.text);
NSString *criteria = [[NSString alloc] initWithString:searchBar.text];
//Parse xml
NSString *uidString = @"55555";
NSString *varString = [[NSString alloc] initWithFormat:@"qryid=4&uid=%@&Criteria=%@",uidString,criteria];
NSString *urlString = [[NSString alloc] initWithString:@"http://services.auctiontrac.com/websvc.asp"];
NSString *parsingString = [[NSString alloc] initWithFormat:@"%@?%@",urlString,varString];
xmlSearch = [[XMLSearch alloc] loadXMLByURL:parsingString];
//init array for table
tableArray = [[NSMutableArray alloc] init];
carTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
[carTable reloadData];
//Add search results to UITableView
for (Car *c in [xmlSearch cars])
[tableArray addObject:c.make];
NSLog(@"Added item with make: %@",c.make);
[searchBar resignFirstResponder];
如果您需要更多代码来回答这个问题,请告诉我。
【问题讨论】:
为什么你认为向 tableArray 添加对象应该更新实际的表视图? tableArray 是你自己做的数组,不是吗? 我认为我们需要更多的代码......虽然假设一些关于其余代码的事情'reloadData'应该很可能是之后你已经填充了“tableArray "。 在 UITableView 方法中,将 tableArray 中的对象添加到表中。 【参考方案1】:请确保您已为您的UITableView
设置了dataSource
,并且在您更新了保存数据的数组之后在您的表格视图上调用了-reloadData
。
调用-reloadData
将提示表视图向其数据源询问节数、每个节中的行数,以及UITableViewCell
s 询问当前可见的数据。我假设您的数据源方法从tableArray
获取每行的行数和数据。这意味着当您调用 [carTable reloadData]
时,tableArray
必须包含最新数据。
【讨论】:
【参考方案2】:你设置了表格的数据源吗?尝试这样做。
【讨论】:
在界面生成器中?你可以说得更详细点吗?我是 iPhone 编程的菜鸟。 因为您是从代码 IB 中创建的,所以如果您想了解更多信息,请检查 UITableView 参考和/或下载苹果提供的示例。【参考方案3】:您正在创建的表格永远不会添加到视图中,因此它永远不会出现。此外,您应该已经初始化表并将其添加到此方法之外的视图中,然后在搜索后简单地对其调用 reloadData。
【讨论】:
【参考方案4】:您必须在视图中添加 carTable
即[self.view addSubview: carTable];
并设置 carTable 的数据源和委托 即
carTable.datasource = self;
carTable.delegate = self;
如果你通过 Interface builder 给了 put tableview 那么就不需要
carTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
只需设置表的数据源和委托并制作表的出口
即IBoutlet UiTableView *carTable;
并在 Interface builder 中将其与您的表连接
【讨论】:
以上是关于为啥我的 UITableView 不显示数据?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的单元格在我的 UITableView 中显示为空白?