选择时 PickerView didSelectRow 会崩溃并显示 (lldb) 错误
PickerView didSelectRow when selecting it will Crash and shows (lldb) error
我正在创建自定义视图,因为我添加了选择器,当 did selected
选择后在索引方法中的行时,我将从 superView 中删除选择器,但应用程序会崩溃。如果不从 superview
中删除,它就不会崩溃。我能做什么请建议我。
我会在文本框选择时使用选择器
_rUsername=[[UITextField alloc]initWithFrame:CGRectMake(15, 270, self.view.frame.size.width-30, 30)];
_rUsername.backgroundColor=[UIColor whiteColor];
_rUsername.placeholder=@"Gander";
[_rUsername addTarget:self action:@selector(showPicker)forControlEvents:UIControlEventEditingDidBegin];
[_registerView addSubview:_rUsername];
Picker 方法现在出现问题
-(void) showPicker
{
[_rUsername resignFirstResponder];
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(30,230,220,0)];
pickerView.delegate = self;
pickerView.dataSource = self;
pickerView.showsSelectionIndicator = YES;
[_registerView addSubview:pickerView];
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [_arrayNo count];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [_arrayNo objectAtIndex:row];
}
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
int sectionWidth = 300;
return sectionWidth;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
_rUsername.text=[_arrayNo objectAtIndex:row];
[pickerView removeFromSuperview];
}
在这里,如果我从 didselectRow
方法中删除 [pickerView removeFromSuperview];
,它将正常工作,但我希望在选择选择器后必须从超级视图中删除。如果它不会崩溃并像这样显示错误“(lldb)”。
将其更改为以下内容:
pickerView.hidden = true;
使用这个 -
[pickerView setHidden:YES];
我正在创建自定义视图,因为我添加了选择器,当 did selected
选择后在索引方法中的行时,我将从 superView 中删除选择器,但应用程序会崩溃。如果不从 superview
中删除,它就不会崩溃。我能做什么请建议我。
我会在文本框选择时使用选择器
_rUsername=[[UITextField alloc]initWithFrame:CGRectMake(15, 270, self.view.frame.size.width-30, 30)];
_rUsername.backgroundColor=[UIColor whiteColor];
_rUsername.placeholder=@"Gander";
[_rUsername addTarget:self action:@selector(showPicker)forControlEvents:UIControlEventEditingDidBegin];
[_registerView addSubview:_rUsername];
Picker 方法现在出现问题
-(void) showPicker
{
[_rUsername resignFirstResponder];
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(30,230,220,0)];
pickerView.delegate = self;
pickerView.dataSource = self;
pickerView.showsSelectionIndicator = YES;
[_registerView addSubview:pickerView];
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [_arrayNo count];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [_arrayNo objectAtIndex:row];
}
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
int sectionWidth = 300;
return sectionWidth;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
_rUsername.text=[_arrayNo objectAtIndex:row];
[pickerView removeFromSuperview];
}
在这里,如果我从 didselectRow
方法中删除 [pickerView removeFromSuperview];
,它将正常工作,但我希望在选择选择器后必须从超级视图中删除。如果它不会崩溃并像这样显示错误“(lldb)”。
将其更改为以下内容:
pickerView.hidden = true;
使用这个 - [pickerView setHidden:YES];