2010-05-25 31 views
0

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

我有一个的UITextField在一个视图中,一个的UITextField在查看A. 而且我还有一个针对B,的UITextField的B查看B.

我使用导航控制器栏以切换之间的意见。 UITextFields属性和连接的视图A和B的插座。

在我的看法A有一个“选项”按钮,它推动视图B.所以,当你在文本框A中键入时,我想要相同的文本在Textfield B中出现。

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

我认为这很简单。但我无法得到它的工作。

我想:

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

但没有出现在视图B.?我怎么回去?我不想使用NSUserdefaults,因为我必须删除这些值。

回答

0

由于以及ii我终于找到了。

首先,您不能将UITextFields属性推送到另一个视图。我必须制作一个可以推送的单独的NSString。像这样

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

在B的viewWillAppear中我把:

bTextField.text = aString; 

然后我就想了bTextField.text推回的视图。我不得不做出一个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; 
} 
0

这里的问题可能是,当你尝试设置textfieldAs文本很有可能textFieldA还没有被实例化....你应该检查看看它有...但我不会连接textFieldA通过IB,因为用你的方法这里的时候,乌尔观点似乎可能reintialize其网点和清除文本,以及,我可能会programitcally设置文本框...希望这有助于

0

想想模型 - 视图 - 控制器(MVC)NSUserDefaults的...可能是一个存储模型的地方,但是NSString也可以。假设你使用NSString。在A &中创建它使其成为B的一个属性,在viewWillDisappear中的每个视图中更新您的模型(字符串)。在ViewWilAppear中更新模型中的视图。任务完成。

编辑: 要更新乙

的属性

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

然后显示b相推或displayModalViewController

+0

确定。但是,在这种情况下,如何更新另一个视图控制器的属性?我想我也必须在设置属性后立即释放字符串。 – Chrizzz 2010-05-25 20:38:21

+0

不!一点也不。你的模型需要坚持 - 所以创造它永远存在的顶级事物。我从你的描述中猜测'A'。在A的dealloc中释放它(但在实践中,只有在您退出应用程序时才会调用它,因此它是无关紧要的)。 这真的没有完成,所以如果它不工作,插入NSLog语句来找出被调用的内容以及按什么顺序。 A的ViewWillDisappear应该更新你的(而非简化的)模型。 B的viewWillAppear应该读取模型并将其写入屏幕。然后反之亦然。我添加了一些代码。 – Andiih 2010-05-25 22:04:08

+0

谢谢Andiih。你的回答非常有帮助。它“推动”我朝着正确的方向前进。由于完整的答案有点复杂,我会单独发布。 – Chrizzz 2010-05-26 08:17:20

相关问题