Почему мой UITableView не показывает данные? - PullRequest
0 голосов
/ 08 июля 2010

Вот моя проблема.У меня есть экран в приложении панели вкладок, который отображает панель поиска и 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];   
}

Дайте мне знать, если вам нужно больше кода для ответа на этот вопрос.

Ответы [ 4 ]

1 голос
/ 09 июля 2010

Пожалуйста, убедитесь, что вы установили dataSource для вашего UITableView и что вы вызываете -reloadData в своем табличном представлении после вы обновили массив, содержащий ваши данные.

Вызов -reloadData предложит табличному представлению запросить у своего источника данных количество разделов, количество строк в каждом разделе и UITableViewCell s для данных, которые в данный момент видны.Я предполагаю, что ваши методы источника данных получают количество строк и данных для каждой строки из tableArray.Это будет означать, что tableArray должен содержать последние данные при вызове [carTable reloadData].

0 голосов
/ 08 июля 2010

Таблица, которую вы создаете, никогда не добавляется в представление, поэтому она никогда не появится. Кроме того, вы должны были инициализировать таблицу и добавить ее в представление вне этого метода, а затем просто вызвать reloadData для нее после поиска.

0 голосов
/ 09 июля 2010

Вы должны добавить carTable на ваш взгляд, т.е. [self.view addSubview: carTable];

и установить источник данных и делегат carTable, т.е.

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

И если вы дали поставить tableview через построитель интерфейса, то нет необходимостидля

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

просто установите источник данных и делегат таблицы и сделайте вывод таблицы

т.е. IBoutlet UiTableView *carTable;

и подключите его в Интерфейсном мастере к вашей таблице

0 голосов
/ 08 июля 2010

Вы установили источник данных таблицы?Попробуйте сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...