2017-06-29 22 views
0

UIPickerViewから複数の行を選択し、UITextFieldに配置したいとします。私のプロジェクトで使われている言語は客観的なものです。論理を理解できませんUIPickerViewから複数の行を選択する方法

+0

あなたは 'UITableView'を使って自分自身を作る方が良いです –

+0

私はそれを行う方法を理解できません –

+0

' UITableView'に複数の選択を実装する必要があります。 @MuhammadAdeelQureshi – iPeter

答えて

0

あなたが達成したいことがわかっているのは、リストから複数の項目を選択してUITextFieldに表示したいということです。そのためには、

最初にUITableViewstoryboardにドラッグアンドドロップし、datasourcedelegatesを接続します。

あなた tableview

ドラッグUITableViewCellreuserIdentifierとしてテーブルセルを与えます。

UILabelUIImageViewtableCellにドラッグします。 labelimageViewにタグをつけてととしてください。 imageviewを小さな箱のようにして、labelの横に置きます。

arrayを入力して、アイテムを選択してUITableViewを入力するように表示するリストを表示します。

選択したアイテムを保存する別のarrayを取ってください。あなたのviewDidLoadあなたの項目arrayを移入して今

@implementation ViewController { 
    NSMutableArray *arrItems; 
    NSMutableArray *arrSelectedItems; 

} 

:ちょうどあなたの実装の下

は、このような二つの配列を宣言します。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    arrItems = [[NSMutableArray alloc]init]; 
    for (int i = 0; i < 10; i++) { 
     NSMutableDictionary *dict = [[NSMutableDictionary alloc]init]; 
     [dict setObject:[NSString stringWithFormat:@"Item%d",i+1] forKey:@"itemName"]; 
     [dict setObject:@"0" forKey:@"isSelected"]; 
     [arrItems addObject:dict] 
    } 
    arrSelectedItems = [[NSMutableArray alloc]init]; 
} 

UITableViewDataSourceDelegateメソッドを実装します。私はそれをテストしていませんが、ここでは合計コードを書かれているので、何らかのエラーが発生した場合、お気軽に:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSMutableDictionary *dict = [arr objectAtIndex:indexPath.row]; 
    if ([arrSelectedItems containsObject:dict]) { 
     [arrSelectedItems removeObject:dict]; 
    } else { 
     [arrSelectedItems addObject:dict]; 
    } 
    if ([[dict valueForKey:@"isSelected"]isEqualToString:@"0"]) { 
     [dict setObject:@"1" forKey:@"isSelected"]; 
    } else { 
     [dict setObject:@"0" forKey:@"isSelected"]; 
    } 
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 

    //Here you can show the selected Objects in `UITextField` 
    self.yourTexField.text = [arrSelectedItems componentsJoinedByString:@","]; 
} 

PSを:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return arrItems.count; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableCell"]; 

    NSMutableDictionary *dict = [arrItems objectAtIndex:indexPath.row]; 

    UILabel *lblItemName = (UILabel *)[cell.contentView viewWithTag:888]; 
    lblItemName.text = [dict valueForKey:@"itemName"]; 

    UIImageView *imageView = (UIImageView *)[cell.contentView viewWithTag:999]; 
    if ([[dict valueForKey:@"isSelected"]isEqualToString:@"0"]) { 
     imageView.backgroundColor = [UIColor redColor]; 
    } else { 
     imageView.backgroundColor = [UIColor greenColor]; 
    } 

    return cell; 
} 

は今、以下のようにdidSelectRowAtIndexPathで複数選択のログインを実装します下のコメントを残すために、私はそれを解決するためにそこにいます。

私はあなたに役立つと思います。

+0

ありがとう非常に –

+0

お寄せください。 :)ハッピーコーディング。 :)可能であれば、答えをupvoteしてください。 :P – iPeter

0

各行を言語として新しいテーブルビューを作成し、ユーザーがテキストフィールドに応答したときに表示することができます。
複数選択ロジックの実装方法については、hereのスターターコードを参照してください。
テキストフィールドにはプロパティーコールinputviewがあります。それをtableviewに置き換えることができます。

関連する問題