Ios 当ViewDid出现时,如何调用pickerview的委托?

Ios 当ViewDid出现时,如何调用pickerview的委托?,ios,objective-c,cocoa-touch,delegates,uipickerview,Ios,Objective C,Cocoa Touch,Delegates,Uipickerview,当视图出现时,我需要完全调用pickerview中最后选定的行!我的视图中有此代码显示它将动画显示到最后选定的行,但它不会真正调用代理,并且我行中的NSLog不会打印,除非触摸我的选取器并重新选择它们 我该怎么做 - (void)viewDidAppear:(BOOL)animated { NSUserDefaults *pickerViewSelectionDefaults = [NSUserDefaults standardUserDefaults]; [tasbeehPicker se

当视图出现时,我需要完全调用pickerview中最后选定的行!我的
视图中有此代码显示
它将动画显示到最后选定的行,但它不会真正调用
代理
,并且我行中的
NSLog
不会打印,除非触摸我的选取器并重新选择它们

我该怎么做

- (void)viewDidAppear:(BOOL)animated {

 NSUserDefaults *pickerViewSelectionDefaults = [NSUserDefaults standardUserDefaults];
[tasbeehPicker selectRow:[pickerViewSelectionDefaults integerForKey:@"picker"]
      inComponent:0 animated:YES];

[pickerViewSelectionDefaults synchronize];
[UIPicker reloadAllComponents];    

NSLog(@"Last selcted row was %d  ",[[NSUserDefaults standardUserDefaults] integerForKey:@"picker"]);

}

通过代码更新选择器时不应调用委托。仅当用户与选择器交互时,才会调用委托。如果两种情况下都需要调用相同的代码,请执行以下操作:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [myPicker selectRow:4 inComponent:0 animated:animated];
    [self handlePickerSelection:myPicker];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    [self handledPickerSelection:pickerView];
}

- (void)handlePickerSelection:(UIPickerView *)pickerView {
    // process selection
}

通过代码更新选择器时不应调用委托。仅当用户与选择器交互时,才会调用委托。如果两种情况下都需要调用相同的代码,请执行以下操作:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [myPicker selectRow:4 inComponent:0 animated:animated];
    [self handlePickerSelection:myPicker];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    [self handledPickerSelection:pickerView];
}

- (void)handlePickerSelection:(UIPickerView *)pickerView {
    // process selection
}

您可以从下面的方法中获取所选行

在ViewDidDisplay中添加此代码

  int index = [pickerViewObject selectedRowInComponent:0];
  [pickerViewObject selectRow:index inComponent:0 animated:YES];
SelectedRowUncomponent将为您提供所选的行号,然后您可以使用selectRow:row\u number Uncomponent:Component\u number animated:YES来选择任何行,不会调用选择器委托方法

如果要在NSUserDefaults中保存所选行,而不是在ViewWillEnglish中保存所选行

  int index = [pickerViewObject selectedRowInComponent:0];

现在将此索引值保存在NSUserDefaults中。

您可以从下面的方法中获取所选行

在ViewDidDisplay中添加此代码

  int index = [pickerViewObject selectedRowInComponent:0];
  [pickerViewObject selectRow:index inComponent:0 animated:YES];
SelectedRowUncomponent将为您提供所选的行号,然后您可以使用selectRow:row\u number Uncomponent:Component\u number animated:YES来选择任何行,不会调用选择器委托方法

如果要在NSUserDefaults中保存所选行,而不是在ViewWillEnglish中保存所选行

  int index = [pickerViewObject selectedRowInComponent:0];

现在将此索引值保存在NSUserDefaults中。

不要用与xcode无关的
xcode
标记问题。谢谢,我用
uipickerview
instead@userXXX我明白了,谢谢!不要用
xcode
标记与xcode无关的问题。谢谢,我用
uipickerview
instead@userXXX我明白了,谢谢!谢谢,但我看到您选择了
“4”!我专门使用了
NSUserDefault
来调用用户最后选择的行!我能这么做吗?我打字的时候太懒了。您可以使用
NSUserDefaults
。虽然在阅读时没有理由调用
synchronize
。我确实使用
NSUserDefault
进行了尝试,但当选择第三行时,输出返回调用第一行!!怎么了?这是一个完全不同的问题。要帮助调试该问题,请将
NSUserDefaults
的结果存储在一个单独的变量中,以便您可以查看实际得到的结果。我该如何做?你有类似问题的链接吗?或者你更喜欢我把它作为一个新问题问?谢谢,但我看到你选择了
“4”!我专门使用了
NSUserDefault
来调用用户最后选择的行!我能这么做吗?我打字的时候太懒了。您可以使用
NSUserDefaults
。虽然在阅读时没有理由调用
synchronize
。我确实使用
NSUserDefault
进行了尝试,但当选择第三行时,输出返回调用第一行!!怎么了?这是一个完全不同的问题。要帮助调试该问题,请将
NSUserDefaults
的结果存储在一个单独的变量中,以便您可以查看实际得到的结果。我该如何做?你有类似问题的链接吗?还是你更喜欢我把它当作一个新问题问?