我的应用程序从服务器提取数据,以获取当前组列表供您选择。然后,将其添加到此行的顶部,称为“创建新组”。这很好用,但是从已经选择该行开始,所以我必须离开它,然后再次返回以选择它并激活键盘。如何添加另一个选项以使其从空白行开始?我试过简单地在行中执行+ 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;
    }
}

我提供了下图,以显示使用某些常规数据时的外观。

ios - 用空白行开始UIPickerView-LMLPHP

10-04 21:33
查看更多