嗨,
我在一个视图中有一个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,因为我也必须删除这些值。
答案 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;
}