我正在尝试学习iPhone / iOS编程。我有一个UIPickerView,一旦它变得可见就会显示它所选择的行(它包含在flippSideView中)。
不幸的是,没有调用flipSideViewController的awakeFromNib
。在viewDidLoad
中进行此操作有点为时已晚。
那么,如何让pickerView在显示后立即显示所选行?
更新
以下是我展示翻转视图的方式
- (IBAction)showInfo:(id)sender {
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
controller.delegate = self;
controller.uData = userData;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
controller.pickerView.delegate = userData;
controller.pickerView.dataSource = userData;
[controller release];
}// showInfo
在翻转控制器中有一个mySelect方法(帮助我跟踪跟踪调用)
-(void) mySelect:(NSString*) strMethod{
int row = [uData getCurrentUserRow];
[pickerView selectRow:row inComponent:0 animated:NO];
NSLog(@"selectRow %d called from %@ (pickerView=%d uData=%d)", row, strMethod, (int)pickerView, (int)uData); }
当程序运行时,它会生成日志
selectRow 3 called from viewDidLoad (pickerView=87412720 uData=89267696)
selectRow 3 called from viewWillAppear (pickerView=87412720 uData=89267696)
selectRow 3 called from viewDidAppear (pickerView=87412720 uData=89267696)
答案 0 :(得分:0)
好像你有几天前遇到的问题,我真的不认为这是一个错误,我认为问题是什么时候被调用(可能是错的)。如果我错了,请纠正我,但是当你的PickerView首次在屏幕上显示正确时,你希望它显示一个特定值?您是在代码中还是从笔尖创建PickerView?
在我的应用中,以下代码段位于viewDidLoad方法的底部
[pickerView selectRow: 100 inComponent:0 animated:YES];
这是按预期工作的。请发布您的代码片段,以便我们更好地了解您的问题。
PS:在为iOS开发时,我会远离awakeFromNib,只使用ViewDidLoad:
答案 1 :(得分:-1)
在某些版本的iOS中显然存在一个错误,这意味着在您致电[super viewWillAppear:animated]
或通过调用[self view]
强制加载来加载视图之前,您的视图无法加载。