4 NSarray进入pickerview

时间:2014-04-07 11:22:28

标签: ios nsarray phone-call

如何将4个nsarray放入1个pickerviewer中 每个数组中都有4个名称。 所以说我有这个:

Array1:Alex

  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx

Array2:安德鲁

  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx

Array3:Sam

  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx

Array4:Rick

  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx
  • 电话号码:xxxxxxxxxx

现在,当我拉下挑选者时,我想在该挑选者中只看到alex,andrew,sam和rick这两个名字。

当我选择一个名字(亚历克斯)时,我希望有4个按钮更改为数字的值,所以当你点击按钮时你可以调用它们。

有人可以帮我解决这个问题。

此刻我有点大脑冻结:S

3 个答案:

答案 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);
}