我有这个NSDictionary:
{
Name =
(
"Lucas",
"Tom"
);
Surname =
(
"Jhon",
"Smith"
"Hop"
);
名称是简单的NSArray
,姓氏是NSMutableArray
。
好了,我的问题是:
从这本词典开始,我必须在UITableView
中显示NSDictionary
每个元素的关键字。例如,在这种情况下,UITableView
会有两个项目,一个叫名称,另一个叫姓氏。
当我点击UITableView的一个元素时,我将不得不转到另一个控制器,它将显示所点击单元格的所有数据。例如,如果我点击Surname,当我打开新控制器时,我必须得到它像 Jhon , Smith 和 Hop
首先,我尝试在所有键之前显示UITableView:
self.KeyArray = [myDictionary allKeys];
并在cellForRowAtIndexPath
方法中:
cell.textLabel.text = [self.KeyArray objectAtIndex: indexPath.row];
但这是一种错误的方法,因为我将丢失与该特定密钥相关的所有信息。你知道我怎么做吗?
答案 0 :(得分:3)
您可以使用委托将NSMutableArray发送到另一个控制器。
让我们说你的第一个视图控制器是" A"它有姓名和姓氏密钥。第二个控制器是" B"哪个将包含您要发送的数组
现在,
1.在A控制器中创建协议
2.创建该协议的委托对象
3.在控制器中创建1个方法,该控制器可以具有参数Like: - (NSMutableArray *)
。
4.将该协议实施到B控制器中
5.声明控制器B中您在控制器A中定义的方法
6.在didSelectRowAtIndexPath中使用委托对象调用该方法,并在该方法中传递该对象。
7.现在,您在该方法中拥有NSMutableArray,并且可以自由使用该值。
答案 1 :(得分:2)
您可以在didSelectRowAtIndexPath
下面写下代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *keyOfMainDic = [self.KeyArray objectAtIndex:indexPath.row]; // in the keyOfMainDic, you will get selected key name of your main dictionary
NSMutableArray *temArray = [yourMaindict objectForKey:keyOfMainDic] // You will get array of specific key.
// Here you just need to pass "temArray" to your destination controller.
}
答案 2 :(得分:1)
首先,您应该从视图控制器中为您的详细控制器定义具有tableview的segue,并在storyboard中为其指定标识符。
然后在KeyArray类型继承的详细控制器头中定义一个属性。
之后,只需在下面编写代码即可。这只是建议,请使用您的阵列的模型而不是字典。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
self.KeyArrayItem = [self.KeyArray objectAtIndex:indexPath.row];
[self performSegueWithIdentifier:@"yourSegueID" sender:self.KeyArrayItem];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
AnotherController *controller = segue.destinationViewController;
controller.KeyArrayItem = sender;
}