0

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

4

2 回答 2

1

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

您还可以使用XMLReader 之类的类。这使您可以简单地将 xml 作为 NSData 或 NSString 对象传递并获取已解析的 NSDictionary。然后,您可以使用它来填充 UIPickerView。

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

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

NSArray *onlineList = [plistAsString propertyList];

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

NSArray *onlineList = [[NSArray alloc] initWithContentsOfFile:pathToPlistFile];
// release if not using ARC.
于 2012-08-27T19:07:58.220 回答
0

我已执行以下操作以在我的一个应用程序中显示标题和 url。我希望填充选择器数据而不是表格单元格: 这是我的一个应用程序的链接,它演示了以下代码的实现:

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;
}
于 2012-08-27T23:28:55.167 回答