加载UIPickerView后选择行

Ste*_*son 74 iphone cocoa-touch objective-c uipickerview

我有一个iPhone数据库应用程序,UIPickerView可以从表中加载数据.我想将所选行设置为另一个表中数据的特定行.

例如:假设我有一个UIPickerView载有X个用户朋友名字的名字(名字的数量是可变的;它可以是1或1000,并且所有都由用户输入数据库).iPhone用户有一个偏好设置,他们当前最好的朋友是TED.我想在显示时将UIPickerView其定位到TED.

我在哪里打电话selectRow?

我试过了viewDidAppear,但它从未被调用,titleForRow其中引起了各种奇怪的行为.viewDidLoad并且viewWillAppear不可能,因为我还不知道数据源中的数据源是什么.

Jab*_*Jab 136

检索数据后调用它.我不知道你在哪里加载数据所以这只是一个应该工作的模型.如果这没有意义,让我知道你在哪里加载数据,所以我可以把它拼凑在一起:)

-(void)viewDidLoad
{
    // load data from sql
    // self.someDataArray = DATAFROMSQL
    [picker reloadAllComponents];
    [picker selectRow:0 inComponent:0 animated:YES];
}
Run Code Online (Sandbox Code Playgroud)


nsp*_*ire 43

当最初显示UIPickerView时需要选择(默认)UIPickerView项时,会出现一个常见问题.问题与事件的顺序有关.通过阅读以前的帖子,似乎通常在视图控制器ViewDidLoad事件中调用[pickerView selectRow:n].但是,UiPickerView数据仅在ViewDidLoad事件之后加载,这意味着ViewDidLoad中的任何选择代码都不起作用.要解决此问题,请将选择代码放在ViewDidAppear中;

- (void) viewDidAppear:(BOOL)animated {
[m_pickerView selectRow:nSelectedItem inComponent:0 animated:YES]; }
Run Code Online (Sandbox Code Playgroud)


Ale*_*lds 7

将它放在UIView包含您UIPickerView作为子视图的任何地方:

[myPickerView selectRow:rowWithTedsName inComponent:columnWithNames animated:NO];
Run Code Online (Sandbox Code Playgroud)