【发布时间】:2011-05-17 11:38:03
【问题描述】:
我正在开发一个基于导航的应用程序 在 rootviewcontroller 我有几个 UITextFields。 rootviewController 上有一个按钮,单击该按钮我正在使用 pushviewcontroller 更改视图。我想在 mapview 中使用在这些 UItextFields 中输入的值,即我的第二个视图。
请给我一些建议。
【问题讨论】:
我正在开发一个基于导航的应用程序 在 rootviewcontroller 我有几个 UITextFields。 rootviewController 上有一个按钮,单击该按钮我正在使用 pushviewcontroller 更改视图。我想在 mapview 中使用在这些 UItextFields 中输入的值,即我的第二个视图。
请给我一些建议。
【问题讨论】:
您可以在推送到导航堆栈之前将所有信息传递给您的第二个控制器。
请参阅伪代码供您参考:
第一:
MyMapController* myController = [MyMapController alloc] initWithValues:Value1,value2,value3,......valuen];
[self.navigationController pushViewController:myController animated:YES];
[myController release];
myController = nil;
第二:
MyMapController* myController = [MyMapController alloc] init];
myController.value1 = value1;
myController.value2 = value2;
myController.value3 = value3;
............
myController.value7 = value7;
myController.value8 = value8;
[self.navigationController pushViewController:myController animated:YES];
[myController release];
myController = nil;
可能有更多的方法来发送数据,
【讨论】:
在推送之前将值分配给第二个控制器。 假设您必须发送 textfield1 的值。现在
secondController.textfield1 = textfield1;
然后做你的推动控制器。
【讨论】:
使用NSDictionary 对象来存储来自第一个控制器的值。假设您正在使用两个文本字段 - textField1 和 textField2。
- (void)loadSecondController {
NSDictionary *values = [NSDictionary dictionaryWithObjectsAndKeys:textField1.text, @"textField1", textField2.text, @"textField2", nil];
// Assuming you are using IB files
SecondViewController *controller = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
controller.values = values; // Declare a NSDictionary property 'values' in SecondViewController
[self.navigationController pushViewController:controller animated:YES];
[controller release];
}
现在在SecondViewController,你可以访问它们
...
textField1Value = [values objectForKey:@"textField1"];
textField2Value = [values objectForKey:@"textField2"];
...
【讨论】: