我无法让我的UITableView显示我的解析元素。这是我的代码:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//elementsArray is a NSArray that is declared in .h
elementsArray = [document selectElements: @"name"];
[myTable reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [elementsArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *MyIdentifier = @"MyIdentifier";
UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil){
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
}
cell.textLabel.text = [elementsArray objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
}
我的NSLog打印出所有元素,但元素不会显示在UITableView中。一切都很好,所有代表等等。如果我定义一个像这样的静态NSArray
NSArray * elementsArray = [NSArray arrayWithObjects:@"name1",@"name2",@"name3",nil];
我不明白为什么它不起作用。任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
在cellForRowAtIndexPath
中设置断点,查看elementsArray是否仍具有正确的元素。从您的代码中,不清楚如何/如果它在事件之间保留。
答案 1 :(得分:0)
好像您在这里错过了对retain
的调用:
elementsArray = [document selectElements: @"name"];
假设selectElements:
的实施符合Apple的内存管理指南,则需要:
elementsArray = [[document selectElements: @"name"] retain];