2016-10-26 3 views
0

У меня есть текстовое поле в моем приложении, в котором пользователь может выбрать группу, к которой они принадлежат, а также несколько других полей. Когда они добираются до GroupFieldField, появляется всплывающее окно UIPickerView, в котором есть несколько вариантов, которые уже были созданы, а также опция «Создать новую группу». Когда этот параметр выбран, я хочу, чтобы UIPickerView ушел, и клавиатура поп назад, чтобы они могли снова ввести. Я могу получить представление сборщика и уйти, но не могу вернуть клавиатуру. Вот код до сих пор.iOS Замените клавиатуру на UIPickerView, а затем на клавиатуру

-(void)addPickerView{ 

    __block NSMutableArray *arr = [[NSMutableArray alloc] init]; 

    PFQuery *rejectedNumber = [PFQuery queryWithClassName:@"Group"]; 
    [rejectedNumber orderByAscending:@"GroupName"]; 
    [rejectedNumber findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 



     if (!objects) { 
      // Did not find any UserStats for the current user 

      NSLog(@"NotFound"); 
     } else { 
      pickerArray = objects; 
      [myPickerView reloadAllComponents]; 

     } 
    }]; 

    //pickerArray = GoGo; 
    self.theView.signUpView.additionalField.delegate = self; 
    [self.theView.signUpView.additionalField setPlaceholder:@"Choose Group"]; 
    myPickerView = [[UIPickerView alloc]init]; 
    myPickerView.dataSource = self; 
    myPickerView.delegate = self; 
    myPickerView.showsSelectionIndicator = YES; 
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] 
            initWithTitle:@"Done" style:UIBarButtonItemStyleDone 
            target:self action:@selector(finishIt)]; 
    UIToolbar *toolBar = [[UIToolbar alloc]initWithFrame: 
          CGRectMake(0, self.view.frame.size.height- 
            self.theView.signUpView.additionalField.frame.size.height-50, 320, 50)]; 
    [toolBar setBarStyle:UIBarStyleBlackOpaque]; 
    NSArray *toolbarItems = [NSArray arrayWithObjects: 
          doneButton, nil]; 
    [toolBar setItems:toolbarItems]; 
    self.theView.signUpView.additionalField.inputView = myPickerView; 
    self.theView.signUpView.additionalField.inputAccessoryView = toolBar; 

} 
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ 
    return 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.inputView removeFromSuperview]; 
     [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; 
} 

ответ

1

Первое, что я заметил, вы пропустили скобки здесь после того, как если условие:

if (row == 0) 
    [self.theView.signUpView.additionalField.inputView removeFromSuperview]; 
    [self.theView.signUpView.additionalField becomeFirstResponder]; 

} 

Вместо использования этого:

if (row == 0) { 
    [self.theView.signUpView.additionalField resignFirstResponder]; 
    self.theView.signUpView.additionalField.inputView = nil; 
    [self.theView.signUpView.additionalField becomeFirstResponder]; 
} 
+0

Спасибо, что работает. {Был в моем коде, я просто случайно удалил его с того момента, когда я опубликовал его ранее. Как я могу изменить его так, чтобы PickerView начинал выделяться в пустой строке? Прямо сейчас первая строка - Create New Group, и вам нужно перейти от нее, а затем вернуться назад, чтобы выбрать ее. Мысли? – user717452

Смежные вопросы