如何将4个nsarray放入1个pickerviewer中 每个数组中都有4个名称。 所以说我有这个:
Array1:Alex
Array2:安德鲁
Array3:Sam
Array4:Rick
现在,当我拉下挑选者时,我想在该挑选者中只看到alex,andrew,sam和rick这两个名字。
当我选择一个名字(亚历克斯)时,我希望有4个按钮更改为数字的值,所以当你点击按钮时你可以调用它们。
有人可以帮我解决这个问题。
此刻我有点大脑冻结:S
答案 0 :(得分:1)
将它们添加到字典中:
self.dict = [[NSMutableDictionary alloc] init]; //Obviously create a property first:
[dict setObject:array1 forKey:@"Alex"];
//etc .....
然后你的选择代表看起来像:
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [self.dict allKeys] count];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [self.dict allKeys][row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSString *person = [dict allKeys][row];
NSArray *personDetails = [dict objectForKey:person];
}
答案 1 :(得分:0)
你确定要使用UIPickerView吗?如果您没有使用超过1个组件,那么您可以使用UITableView。每个单元格将只包含您想要的名称(使用方法cellForRow :),当您选择它时(didSelectRow :)它将显示该单元格的前4个按钮,这些按钮现在已被隐藏。当您在另一个单元格上键入时,前一个单元格将返回其默认状态(按钮被隐藏),当然如果您点击其中一个未隐藏的按钮,则拨打所需的数字。
有意义吗?
答案 2 :(得分:0)
形成我能理解的是你需要一个带字典的数组
NSMutableArray *superArray = [NSMutableArray array]; //superArray should be declared in the interface
NSArray *setNames = [NSArray arrayWithObjects:@"Alex",@"Andrew",@"Sam",Rick,nil];
NSArray *alexArray = [NSArray arrayWithObjects:@"Tel nr:xxxxxxxxxx",@"Tel nr:xxxxxxxxxx",nil];
NSArray *andrewArray = [NSArray arrayWithObjects:@"Tel nr:xxxxxxxxxx",@"Tel nr:xxxxxxxxxx",nil];
NSArray *samArray = [NSArray arrayWithObjects:@"Tel nr:xxxxxxxxxx",@"Tel nr:xxxxxxxxxx",nil];
NSArray *rickArray = [NSArray arrayWithObjects:@"Tel nr:xxxxxxxxxx",@"Tel nr:xxxxxxxxxx",nil];
NSArray *totalArray = [NSArray arrayWithObjects:alexArray,andrewArray,samArray,rickArray,nil];
for (int i=0 ; i < [setNames count] ; i++){
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectAndKeys:[setNames objectAtIndex:i],@"setName",[totalArray objectAtIndex:i],@"telephoneArray" ,nil];
[superArray addObject:dictionary];
}
现在您以所需的方式存储所有数据
for pickerView委托
将numberOfRowsInCOmponent设置为[superArray count];
titleForRowInComponent为[superArray objectAtIndex:row]valueForKey:@"setName"];
进一步从pickerView
中选择任何特定名称- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// get the array of the selected setName
//Eg: After selecting Sam in pickerView
NSArray *selectedNamesTelephoneArray = [superArray objectAtIndex:row]valueForKey:@"telephoneArray"];
NSLog(@"the selected ones telephone numbers are %@",selectedNamesTelephoneArray);
}