【问题标题】: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 中的对象添加到表中。

标签: ios iphone xml uitableview load


【解决方案1】:

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

调用-reloadData 将提示表视图向其数据源询问节数、每个节中的行数,以及UITableViewCells 询问当前可见的数据。我假设您的数据源方法从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 中将其与您的表连接

      【讨论】:

        猜你喜欢
        • 2017-05-29
        • 2021-04-29
        • 2016-03-07
        • 2015-07-03
        • 2010-10-14
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多