2011-08-06 104 views
1

我在我的应用程序中使用UIPickerView。我使用了一些教程来完成设置并从用户那里获取所选数据,并且工作正常。 (使用“ - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)组件“),指向一定的价值。如何设置UIPickerView启动的行?

更具体:

  • 我一旦用户当用户回来选择一个值,我得到它,并通过NSUserDefaults的
  • 把它保存NSString的
  • 数组一个UIPickerView到包含UIPickerView的UIViewController,我想从NSUserDefaults中获取保存的数据,并将UIPickerView指向保存在那里的值。

我应该在哪写代码来设置这些数据?

回答

4

你会写在ViewWillAppear上:(因为这是当你想设置数据)。

在那里,你可以阅读你的模型(核心数据,NSUserDefaults的,PLIST等)的值,并使用其设置:

- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated 

这是UIPickerView的方法。

2

我有一段时间的同样的问题。这里是我的解决办法:

在viewDidLoad中

[_picker selectRow:[[[NSUserDefaults standardUserDefaults]objectForKey:"objectname"]intValue] inComponent:0 animated:YES]; 

这可以确保你去排在它那个对象。上面的答案与上面的一个例子有关如何指定你确切的NSUserDefault的行。

+0

酷的男人..干杯 –

0

这很好用!尝试一下!在我的示例中使用的rowNumberSelectedFirst只是一个变量,用于保存在加载UIPickerView时首先要选择的行号。

对于swift 3,你可以使用它。

let rowNumberSelectedFirst: Int = 3 
pickerView.selectRow(rowNumberSelectedFirst, inComponent: 0, animated: true) 

对于Objective-C中,你可以使用这个

int rowNumberSelectedFirst = 3; 
[picker selectRow:rowNumberSelectedFirst inComponent:0 animated:YES];