我是iOS开发的新手。我正在开发我的项目,它完全基于来自url的XML解析。我解析了XML数据并存储在数组中,但我无法在UITableView
中显示arraydata。
这是我的代码。
-(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;
}
感谢您的帮助。
答案 0 :(得分:1)
这不是在tableView中加载数据的正确方法(解析xml时)。因为你完全不确定是否会立即获取数据(对于大的xml文件)。
实施名为
的NSXMLParser委托方法- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//here your [tableView reloadData] goes...
}
解析器对象在成功完成解析后发送给委托。
答案 1 :(得分: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];
}
答案 2 :(得分:0)
尽管我理解你的代码,但我没有看到你填充你的eventarray,因为在cellForRowAtIndexPath中你从该数组中获取一些记录并试图在单元格中显示值,所以当时它肯定是空的。
答案 3 :(得分:-1)
请按照此链接创建示例tableview.replace数组数据而不是使用响应数据数组的常量数据。获取数组值后使用[tableview reloadData];