带有来自 URL 的数组的 iPhone 选择器

Posted

技术标签:

【中文标题】带有来自 URL 的数组的 iPhone 选择器【英文标题】:Iphone Picker with Array from URL 【发布时间】:2012-06-28 18:38:06 【问题描述】:
-(void)dismissActionSheet:(id)sender 
[actionSheet dismissWithClickedButtonIndex:0 animated:YES];


-(IBAction) pressButton:(id)sender



actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
                                                         delegate:nil
                                                cancelButtonTitle:nil
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:nil];

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

CGRect pickerFrame = CGRectMake(0, 40, 0, 0);



UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = pickerArray;
pickerView.delegate = self;

[actionSheet addSubview:pickerView];
[pickerView release];

UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"OK"]];
closeButton.momentary = YES; 
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];

[closeButton release];

[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];

[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];

[actionSheet release];

我制作了一个选择器,只需按一下按钮,它就会像键盘一样弹出。 现在我只是想用我网站上的一个数组来填充它。 即http://www.mywebsite.com/app/array.txt

这是我目前所拥有的:

- (void)viewDidLoad
NSURL *url = [NSURL URLWithString:@"http://www.tntmax.com/app/gQL420pt.txt"];
NSString *x = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
self.pickerArray = x;

[x release];

它似乎不起作用。 我尝试了许多不同的方法,这只是最近的尝试。

我网站上的页面如下所示:

@"object1", @"thing2", @"person3", @"stuff4", nil

我可以将文本格式更改为最适合代码的格式。告诉我。

我可以做些什么来完成这项工作?

【问题讨论】:

【参考方案1】:

您应该阅读UIPickerView documentation。您不能使用NSString 作为数据源,而是需要一个符合UIPickerViewDataSource 协议的对象。

此外,如果您尝试从您的网站加载 NSArray,您可以将数据格式化为 plist,然后使用 [NSArray arrayWithContentsOfURL:url]。这将为您提供更适合UIPickerViewDataSource 使用的数据

// plist header here (look it up...)
<plist>
<array>
    <string>object1</string>
    <string>thing1</string>
    // more strings
</array>
</plist>

【讨论】:

【参考方案2】:

使用这个:

 - (void)viewDidLoad
 
   NSURL *url = [NSURL URLWithString:@"http://www.tntmax.com/app/gQL420pt.txt"];
   NSString *reply= [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
   NSArray *txtItems= [reply componentsSeparatedByString:@","];
   //if u want remove @"" from all values then replace items in array withReplacingocurrenceOfString with @ and "
   self.pickerArray = txtItems; // as pickerArray is nsarray if not(nsmutableArray) then use [txtItems mutableCopy];
 

【讨论】:

以上是关于带有来自 URL 的数组的 iPhone 选择器的主要内容,如果未能解决你的问题,请参考以下文章

核心数据从数组中选择对象 - iPhone

iPhone - 来自本地文件 URL 的 NSData

如何保护来自 iphone 的网络服务 URL?

iphone表视图滚动中止-无法识别的选择器

来自 URL 的 Swift 表格视图图像在选择单元格之前不会显示

C ++ Armadillo:来自二维矩阵的索引数组