Ios 当ViewDid出现时,如何调用pickerview的委托?
当视图出现时,我需要完全调用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
视图中有此代码显示
它将动画显示到最后选定的行,但它不会真正调用代理
,并且我行中的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
的结果存储在一个单独的变量中,以便您可以查看实际得到的结果。我该如何做?你有类似问题的链接吗?还是你更喜欢我把它当作一个新问题问?