-1

我是 iOS 开发的新手。我正在开发我的项目,它完全基于从 url 解析的 XML。我解析了 XML 数据并存储在一个数组中,但我无法在UITableView.

这是我的代码。

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
    eventarray = [[NSMutableArray alloc]init];
    xmlParserObject = [[NSXMLParser alloc] initWithData:webData];
    [xmlParserObject setDelegate:self];
    [xmlParserObject parse];
    for (int i =0; i<[rssOutputData count]; i++) {
        Eventlist *log = [rssOutputData objectAtIndex:i];
        eventid = log.id;
        NSLog(@"%d",eventid);
        Invit = log.eventname;
        NSLog(@"%@",Invit);
    }
    [rssOutputData release];
    [connection release];
    [tblView reloadData];
}

我的数组在这里打印值,但是如何在UITableView. 我试过了,但我没有在表格视图中获取数据。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"eventCell";
    UITableViewCell *cell= [[tableViewdequeueReusableCellWithIdentifier:CellIdentifier]autorelease];
    if(indexPath.section == 0)
    {
        Eventlist *msglist = [eventarray objectAtIndex:indexPath.row];
        cell.textLabel.text = msglist.eventname;
        cell.textLabel.textColor = [UIColor greenColor];
    }
    if(indexPath.section == 1)
    {
        UIButton *viewmoreButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        viewmoreButton.frame = CGRectMake(200.0f, 5.0f, 75.0f, 30.0f);
        [viewmoreButton setTitle:@"View More" forState:UIControlStateNormal];
        [cell addSubview:viewmoreButton];
        [viewmoreButton addTarget:self action:@selector(viewMore:)forControlEvents:UIControlEventTouchUpInside];
    }
    return cell;
}

感谢你的帮助。

4

4 回答 4

1

这不是在 tableView 中加载数据的正确方法(解析 xml 时)。因为您完全不确定是否会立即解析数据(对于大 xml 文件)。

实现NSXMLParser的委托方法调用,

- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//here your [tableView reloadData] goes...
}

解析器对象在成功完成解析后发送给委托。

于 2013-08-29T05:54:24.693 回答
0

看起来您将数据存储在 中rssOutputData,但您[rssOutputData release];connectionDidFinishLoading. 您可能会在那里丢弃您的数据。

看起来eventArray从来没有添加任何东西。如果您尝试访问不存在的索引,这将导致崩溃。

尝试将for循环更改为:

for (int i =0; i<[rssOutputData count]; i++) {
Eventlist *log = [rssOutputData objectAtIndex:i];
eventid = log.id;
NSLog(@"%d",eventid);
Invit = log.eventname;
NSLog(@"%@",Invit);

[eventArray addObject:log];
}
于 2013-08-29T05:59:33.933 回答
0

据我了解您的代码,我没有看到您填充事件数组,因为在 cellForRowAtIndexPath 中,您正在从该数组中获取一些记录并尝试在单元格中显示值,因此当时它肯定是空的。

于 2013-08-29T06:01:27.393 回答
-1

请按照此链接创建示例 tableview。用您的响应数据数组替换数组数据而不是常量数据。获取数组值后使用 [tableview reloadData];

于 2013-08-29T05:50:41.157 回答