2012-08-27 114 views
0

是否可以從外部XML文件動態填充UIPickerView數據。 例如,我將在我的選取器視圖中使用TextA,TextB和TextC,並且在遠程服務器中的XML文件中具有相同的內容。我已經成功開發了從遠程服務器讀取XML數據並在我的tableview中顯示文本(它們是標題和url)。但現在我正試圖從我的XML文件中填充我的UIPickerView數據。這樣做的主要目的是動態控制我XML文件中的UIPickerView數據。 無論如何要做到這一點?UIPickerView從外部XML文件動態填充數據

+0

是否需要XML?使用.plist文件會更容易。 – DrummerB

+0

雅我可以使用.plist爲此,但我想控制從我的外部網站pickerview內的數據,因爲pickerview中的所有數據都是動態的,他們將來會改變。什麼是最好的設計方法? – jeewan

回答

0

我做了以下顯示標題和我的一個應用程序中的網址。我想同樣來填充拾取數據,而不是表格單元格: This is a link of one of my apps這表明了下面的代碼執行:

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; 
} 
1

您可以使用NSXMLParser解析XMl文件。它是一個事件驅動的解析器,因此您必須設置一個委託來處理所有回調,並從解析的節點創建數組和字典。

你也可以使用類似XMLReader。這使您可以簡單地將xml作爲NSData或NSString對象傳遞,並獲得解析的NSDictionary。然後你可以使用它來填充UIPickerView。

雖然這有點不方便,但如果可以的話,使用.plist文件會是更好的選擇。當然,如果你想從其他平臺上訪問相同的信息,那也不是一種選擇。

然後,你必須下載該文件後做的是:

NSArray *onlineList = [plistAsString propertyList]; 

或者,如果您將文件下載到硬盤:

NSArray *onlineList = [[NSArray alloc] initWithContentsOfFile:pathToPlistFile]; 
// release if not using ARC. 
+0

丟棄此... – jeewan