如何从UIPickerView中选择多行ios
尽可能多地理解你想达到的目的是从列表中选择多个项目并在UITextField
中显示它。为此,您可以这样做:
首先将UITableView
拖放到您的storyboard
并连接datasource
和delegates
。
拖动UITableViewCell
到您的tableview
,并给予reuserIdentifier
为TableCell的。
将UILabel
和UIImageView
拖到tableCell
上。为您的label
和imageView
标签标记为和。使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];
}
现在实行的UITableView
的DataSource
和Delegate
方法。
-(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:我在这里写的总代码,没有测试过,所以如果发生任何错误,随意在下面留言,我会在那里解决它。
我认为它会帮助你。
非常感谢 –
乐意提供帮助。 :)快乐编码。 :)如果可以的话,请加快答案。 :P – iPeter
您可以创建一个新的表格视图,每行作为一种语言,然后在用户响应文本字段时显示它。
您可以查看here了解如何实现多选逻辑的一些入门代码。
一个textfield有一个属性调用inputview
,你可以尝试用tableview替换它。
你最好自己用'UITableView' –
我不明白逻辑怎么做 –
你需要在'UITableView'中实现多选。 @MuhammadAdeelQureshi – iPeter