代码之家  ›  专栏  ›  技术社区  ›  Christian Loncle

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

  •  0
  • Christian Loncle  · 技术社区  · 16 年前

    嗨,

    我在一个视图中有一个uitextfield,在视图A中有一个uitextfield。 我在视图B中还有一个,在视图B中有一个文本字段B。

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

    在我的视图A上有一个“选项”按钮,它推动视图B。所以当你在文本字段A中输入时,我希望相同的文本出现在文本字段B中。

    当您编辑文本字段B并返回到视图A(通过de导航栏中的“标题视图A”按钮),我希望相同的文本重新出现在文本字段A中。

    我以为这很容易。但我不能让它工作。

    我试过:

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

    但是在视图B中没有显示任何内容。我该如何返回?我不想使用nsuserdefaults,因为我还必须删除这些值。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Daniel    16 年前

    这里的问题可能是,当您尝试将textfielda设置为文本时,很可能textfielda还没有被实例化……您应该检查它是否有……但我不会通过ib连接textfielda,因为当您的视图出现时,使用您的方法,它可能会重新初始化其出口并清除文本,我可能会ogramitcally设置文本字段…希望这有帮助

        2
  •  0
  •   Andiih    16 年前

    想想模型视图控制器(MVC)…nsuser默认值可以是存储模型的地方,但是nsstring也可以。

    假设您使用nsstring。在A中创建,使其成为B的属性,更新视图中每个视图中的模型(字符串)将消失。从视图中的模型更新视图将显示。工作完成了。

    编辑: 更新b的属性

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

    然后用Push或DisplayModalView控制器显示B

        3
  •  0
  •   Christian Loncle    16 年前

    多亏了安迪,我终于找到了它。

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

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

    在B的视图中,我把:

    bTextField.text = aString;
    

    然后我想将btextfield.text向后推到A视图。我必须让一个视图像这样消失(你也可以把它写得更短):

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

    }

    最后,我必须在视图中添加以下内容:

        if ([self.bString length] > 0) {
        aTextField.text = self.bString;
    }