如何从UIPickerView中选择多行ios

问题描述:

我想从UIPickerView中选择多于一行并放入UITextField中。我的项目中使用的语言是客观的c。我无法理解逻辑如何从UIPickerView中选择多行ios

+0

你最好自己用'UITableView' –

+0

我不明白逻辑怎么做 –

+0

你需要在'UITableView'中实现多选。 @MuhammadAdeelQureshi – iPeter

尽可能多地理解你想达到的目的是从列表中选择多个项目并在UITextField中显示它。为此,您可以这样做:

首先将UITableView拖放到您的storyboard并连接datasourcedelegates

拖动UITableViewCell到您的tableview,并给予reuserIdentifierTableCell的

UILabelUIImageView拖到tableCell上。为您的labelimageView标签标记为和。使imageview像一个小盒子,并将其放置在您的label旁边。

array为例,显示您想要显示用户选择项目的列表并使用它填充UITableView

拿另一个array其中您想要存储选定的项目。

正是在您的实现中声明了两个数组是这样的:

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

} 

现在,在您viewDidLoad填充您的项目array

- (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方法。

-(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象下面这样:

-(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:我在这里写的总代码,没有测试过,所以如果发生任何错误,随意在下面留言,我会在那里解决它。

我认为它会帮助你。

+0

非常感谢 –

+0

乐意提供帮助。 :)快乐编码。 :)如果可以的话,请加快答案。 :P – iPeter

您可以创建一个新的表格视图,每行作为一种语言,然后在用户响应文本字段时显示它。
您可以查看here了解如何实现多选逻辑的一些入门代码。
一个textfield有一个属性调用inputview,你可以尝试用tableview替换它。