如何设置UIPickerView启动的行?

时间:2011-08-06 16:57:12

标签: ios settings uipickerview nsuserdefaults

我在我的应用中使用UIPickerView。我使用了一些教程来进行设置并从用户那里获取所选数据,并且它工作正常。

我不清楚的是如何告诉UIPickerView,当数据(使用- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component)启动时,指向某个值。

更具体一点:

  • 我有一个包含NSStrings
  • 数组的UIPickerView
  • 用户选择一个值后,我会通过NSUserDefaults
  • 保留该值
  • 当用户返回到包含UIViewController的{​​{1}}时,我想从UIPickerView获取已保存的数据,并让NSUserDefaults指向该值被救了。

我应该在哪里编写设置此数据的代码?

3 个答案:

答案 0 :(得分:4)

您可以在ViewWillAppear:上写一下(因为这是您想要设置数据的时间)。

在那里,您可以从模型中读取值(核心数据,NSUSerDefaults,Plist等)并使用以下方式设置:

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

这是UIPickerView的方法。

答案 1 :(得分:2)

我有一段时间遇到同样的问题。这是我的解决方案:

在viewDidLoad

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

这可以确保您转到包含该对象的行。以上是一个如何指定确切的NSUserDefault行的示例。

答案 2 :(得分: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];