如何在下一个视图中将文本从一个UITextfield推送到另一个UITextfield?然后回来?

时间:2010-05-25 19:26:01

标签: iphone uiviewcontroller uitextfield push

嗨,

我在一个视图中有一个UITextField,在视图A中有UITextField A. 我在视图B中有另一个视图B,UITextField B.

我使用导航控制器栏在视图之间切换。 UITextFields是视图A和B的属性和连接的Outlets。

在我的视图A上有一个“选项”按钮,它会推动视图B.因此,当您在Textfield A中输入时,我希望在Textfield B中显示相同的文本。

当您编辑TextField B并返回查看A(通过导航栏中的“标题视图A”按钮)时,我希望在Textfield A中重新显示相同的文本。

我希望这很简单。但我无法让它发挥作用。

我试过了:

ViewBController *controller = [[ViewBController alloc] initWithNibName:@"ViewBController" bundle:nil];
controller.TextFieldA.text = TextFieldB.text

但是B中没有出现任何内容。我该怎么回来?我不想使用NSUserdefaults,因为我也必须删除这些值。

3 个答案:

答案 0 :(得分:0)

这里的问题可能是当你尝试设置textfieldAs文本时很可能textFieldA还没有被实例化....你应该检查它是否...但我不会通过IB连接textFieldA因为你的方法在这里,当你的视图出现时,它可能会重新定位其奥特莱斯并清除文本,我可能会预先设置文本字段...希望这有帮助

答案 1 :(得分:0)

Think Model View Controller(MVC)... NSUserDefaults可以是存储模型的地方,但NSString也可以

让我们假设您使用NSString。在A&中创建它使其成为B的属性,在viewWillDisappear中的每个视图中更新您的模型(字符串)。在ViewWilAppear中更新模型中的视图。完成工作。

编辑: 更新B

的属性

MyVC * b = [[MyVC alloc] init]; b.myProperty = theReallyImportantValueString;

然后使用push或displayModalViewController

显示b

答案 2 :(得分:0)

感谢Andii,我终于找到了它。

首先,您无法将UITextFields属性推送到另一个视图。我必须制作一个可以推动的单独的NSString。喜欢这个

    BViewController *bViewController = [[BViewController alloc] initWithNibName:@"BViewController" bundle:nil];
    bViewController.aString = self.aTextField.text;

在B的viewWillAppear中我放了:

bTextField.text = aString;

然后我想将bTextField.text推回到A视图。我必须像这样制作一个viewWillDisappear(你也可以写得更短):

- (void) viewWillDisappear:(BOOL)animated  {
NSArray *viewControllerArray = [self.navigationController viewControllers]; 
int parentViewControllerIndex = [viewControllerArray count] - 1;

[[viewControllerArray objectAtIndex:parentViewControllerIndex] setBString:bTextField.text];

 [super viewWillDisappear:animated];

}

最后我必须在A:

的viewWillAppear中添加它
    if ([self.bString length] > 0) {
    aTextField.text = self.bString;
}