2016-10-26 13 views
2

私のアプリは、サーバーからデータを取得して、選択可能な現在のグループのリストを取得します。次に、「Create New Group」という行の先頭に行を追加します。これは素晴らしいですが、すでにこの行を選択しているので、その行から離れてからもう一度選択してキーボードをアクティブにする必要があります。空の行から開始するには、もう1つのオプションを追加するにはどうすればよいですか?私は単純に+ 1の代わりに+ 2を行おうとしましたが、すべてをソートするだけですが、単純に機能しません。どんな助けでも大歓迎です。空白行でUIPickerViewを開始する

-(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; 
} 
+1

理由として説明なし、または手助けする試みとダウンの投票をいただき、ありがとうございます。有効な質問です。 – user717452

+0

基本的には、新しいグループを作成するための追加の行を1つ保管しています。新しいグループを作成すると、そのオプションの追加の行がもう1つ作成されます。それはあなたがしようとしていることですか? – KrishnaCA

+0

空の文字列@ ""または空の文字列を特別なhtml文字で追加する –

答えて

1

この方法では、配列を2つずつ調整して、要求された空白を考慮します。また、何が起きているのかを少し分かりやすくするために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; 
    } 
} 

いくつかの一般的なデータを使用したときの外観を示すために、以下の画像を示しました。

enter image description here

+0

PFObject *オブジェクト行のtitleForRowメソッドでエラーが発生しましたが、式を期待していますが、問題の内容を把握できません(ほとんどスリープしません) – user717452

0
  1. 私はあなたがnumberOfRows 2セット必要だと思います。 「@ 0リターン」、titleForRow:@ 1リターン「するとあなたは
  2. (自動選択でないプログラムであれば)0番目の行を選択する必要がある新しいグループ」
  3. を作成し、0番目を確認し必要な、そして、titleForRow
  4. didSelectRowの1番目と次の値。

その他のアイデア:

はボタンでInputAccessoryViewピッカに追加します。このボタンにアクションを追加し、didSelectでロジックを削除します。

+0

コードが必要ですか? –

関連する問題