如何用解析的元素填充UITableView?

时间:2011-02-02 02:17:32

标签: iphone cocoa-touch uitableview uikit nsarray

我无法让我的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];

我不明白为什么它不起作用。任何帮助,将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

cellForRowAtIndexPath中设置断点,查看elementsArray是否仍具有正确的元素。从您的代码中,不清楚如何/如果它在事件之间保留。

答案 1 :(得分:0)

好像您在这里错过了对retain的调用:

elementsArray = [document selectElements: @"name"];

假设selectElements:的实施符合Apple的内存管理指南,则需要:

elementsArray = [[document selectElements: @"name"] retain];