我在我的应用中使用UIPickerView
。我使用了一些教程来进行设置并从用户那里获取所选数据,并且它工作正常。
我不清楚的是如何告诉UIPickerView
,当数据(使用- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
)启动时,指向某个值。
更具体一点:
NSStrings
NSUserDefaults
UIViewController
的{{1}}时,我想从UIPickerView
获取已保存的数据,并让NSUserDefaults
指向该值被救了。我应该在哪里编写设置此数据的代码?
答案 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];