为什么我的UITableView不会显示数据?

时间:2010-07-08 18:28:58

标签: ios iphone xml uitableview load

这是我的问题。我在标签栏应用程序中有一个屏幕,显示一个搜索栏和一个UITableView。首次打开选项卡时,UITableView为空。输入搜索后,iPhone会根据查询获取并解析XML。

所有这一切都很好。我将XML数据添加到应该填充表的底层数组中。我已经验证数组包含数据,并且不为null。搜索后,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];   
}

让我知道如果您需要更多代码来回答这个问题。

4 个答案:

答案 0 :(得分:1)

请确保您已为dataSource设置了UITableView,并且在更新后,在表格视图上致电-reloadData保存数据的数组。

调用-reloadData将提示表视图向其数据源询问部分数,每个部分中的行数以及当前可见数据的UITableViewCell s。我假设您的数据源方法从tableArray获取每行的行数和数据。这意味着当您致电tableArray时,[carTable reloadData]必须包含最新数据。

答案 1 :(得分:0)

您是否设置了表格的数据源?试着这样做。

答案 2 :(得分:0)

您正在创建的表永远不会添加到视图中,因此永远不会出现。此外,您应该初始化表并将其添加到此方法之外的视图中,然后在搜索后立即调用reloadData。

答案 3 :(得分:0)

您必须在视图中添加carTable 即[self.view addSubview: carTable];

并设置数据源& carTable的代表 即。

carTable.datasource = self;
carTable.delegate = self;

如果您通过界面构建​​器提供了put tableview,则无需

carTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];

只需设置数据源&表的代表和表的出口

即。 IBoutlet UiTableView *carTable;

并在“界面”构建器中将其与您的表

连接