我的应用程序从服务器提取数据,以获取当前组列表供您选择。然后,将其添加到此行的顶部,称为“创建新组”。这很好用,但是从已经选择该行开始,所以我必须离开它,然后再次返回以选择它并激活键盘。如何添加另一个选项以使其从空白行开始?我试过简单地在行中执行+ 2而不是+ 1,然后对所有内容进行排序,但这根本行不通。任何帮助,不胜感激。
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component{
return [pickerArray count] + 1;
}
#pragma mark- Picker View Delegate
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component{
if (row == 0)
{
[self.theView.signUpView.additionalField resignFirstResponder];
self.theView.signUpView.additionalField.inputView = nil;
[self.theView.signUpView.additionalField becomeFirstResponder];
}
else {
[self.theView.signUpView.additionalField setText:self.theGroup];
}
}
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSString *groupName = @"Create New Group";
if (row != 0)
{
PFObject *object = pickerArray[row - 1]; // -1 to handle the array index
self.theGroup = object[@"GroupName"];
groupName = object[@"GroupName"];
}
return groupName;
}
最佳答案
这种方法将数组调整为两倍,以留出所需的空白空间。我还介绍了switch语句,以使其更容易理解正在发生的事情。在代码中添加了注释,以突出显示与您的请求相关的更改。
#pragma mark- Picker View Delegate
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component{
return [pickerArray count] + 2; // This offsets your blank line & "Create new group" option
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component{
switch (row) {
// Ignore 0 here since you don't want to handle the blank space
case 1:
[self.theView.signUpView.additionalField resignFirstResponder];
self.theView.signUpView.additionalField.inputView = nil;
[self.theView.signUpView.additionalField becomeFirstResponder];
break;
default:
[self.theView.signUpView.additionalField setText:self.theGroup];
}
}
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch (row) {
case 0:
return @"";
case 1:
return @"Create New Group";
default:
PFObject *object = pickerArray[row - 2];
self.theGroup = object[@"GroupName"];
return self.theGroup;
}
}
我提供了下图,以显示使用某些常规数据时的外观。