首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPickerView动态填充外部XML文件中的数据

问UIPickerView动态填充外部XML文件中的数据
EN

Stack Overflow用户
提问于 2012-08-28 02:56:23
回答 2查看 834关注 0票数 0

是否可以从外部XML文件动态填充UIPickerView数据。例如,在我的选择器视图中有TextA、TextB和TextC,在远程服务器的XML文件中也有同样的内容。我已经成功地开发了从远程服务器读取XML数据并在我的表视图中显示文本(它们是title和url)。但是现在我正在尝试从我的XML文件填充我的UIPickerView数据。这样做的主要目的是动态地控制我的XML文件中的UIPickerView数据。有没有办法实现这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-28 07:28:55

为了在我的一个应用程序中显示标题和url,我执行了以下操作。我希望用同样的方法填充选择器数据,而不是表格单元格:This is a link of one of my apps,它演示了以下代码的实现:

代码语言:javascript
复制
urlString = @"http://jeewanaryal.web44.net/iPhoneXML/nepaliMoviesNews.xml";
data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
dict = [XMLReader dictionaryForXMLData:data error:nil];

newsItems = [[NSMutableArray alloc] initWithArray:[[[dict objectForKey:@"list"] objectForKey:@"lists"] objectForKey:@"news"]];



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

CustomCell *cell= [[CustomCell alloc] initWithFrame:CGRectMake(0, 0, 300, 60)];

// Default to no selected style and not selected
cell.selectionStyle = UITableViewCellSelectionStyleNone;

// Set the image for the cell  
[cell setTheImage:[UIImage imageNamed:[NSString stringWithFormat:@"Arrow3.png"]]];

NSMutableArray *temp = [[NSMutableArray alloc] init];

for (NSDictionary *fruitDict in newsItems) {


    //UILabel *songTitle = [[UILabel alloc] initWithFrame:CGRectMake(40, 200, 300, 40)];

    [temp insertObject:[NSString stringWithFormat:@"%@",[[fruitDict objectForKey:@"title"] objectForKey:@"text"]]
               atIndex:0];
    //cell.textLabel.text = [NSString stringWithFormat:@"%@",[[fruitDict objectForKey:@"title"] objectForKey:@"text"]];


    //[self.view addSubview:songTitle];
}

//NSLog(@"\n\n temp: \n %@",temp);

cell.textLabel.text = [temp objectAtIndex:indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.font = [UIFont fontWithName:@"Gill Sans" size:20];
cell.textLabel.textColor = [UIColor colorWithRed:102.0/255 green:204.0/255 blue:170.0/255 alpha:1];
//cell.textLabel.textColor =[UIColor colorWithRed:(CGFloat)0.24 green:(CGFloat)0.7 blue:(CGFloat)0.45 alpha:(CGFloat)1];
cell.backgroundColor = [UIColor blackColor];
[[cell textLabel] setTextAlignment:UITextAlignmentLeft];
//cell.textLabel.adjustsFontSizeToFitWidth = YES;
//cell.detailTextLabel.numberOfLines = 2;  

return cell;
}
票数 0
EN

Stack Overflow用户

发布于 2012-08-28 03:07:58

您可以使用NSXMLParser解析XMl文件。它是一个事件驱动的解析器,所以您必须设置一个委托来处理所有的回调,并从解析的节点创建数组和字典。

您也可以使用像XMLReader这样的类。这允许您简单地将xml作为NSData或NSString对象传递,并获得解析后的NSDictionary。然后,您可以使用它来填充UIPickerView。

不过这有点不方便,如果可以的话,使用.plist文件会是一个更好的选择。当然,如果您也想从其他平台访问相同的信息,那么这不是一个选项。

然后,在下载文件后,您需要做的就是:

代码语言:javascript
复制
NSArray *onlineList = [plistAsString propertyList];

或者,如果您将文件下载到磁盘:

代码语言:javascript
复制
NSArray *onlineList = [[NSArray alloc] initWithContentsOfFile:pathToPlistFile];
// release if not using ARC.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12147866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档