在prepareForSegue中设置UITextField文本属性

Cod*_*ton 11 xcode objective-c uitextfield ios segue

我在ViewController1中有一个textField.我有一个push segue到我的ViewController2,它也有一个textField.我需要将ViewController2中的textField.text设置为等于ViewController1中textField中的文本.这是我的代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqual:@"ViewController2"])
    {
        ViewController2 *VCT = [segue destinationViewController];
        VCT.title = @"View Controller #2";
        VCT.textField.text = self.textField.text;
    }
}
Run Code Online (Sandbox Code Playgroud)

标题制定者工作得很好.为什么textField不起作用?

Luc*_*rdo 22

你不能设置的文本UITextField(以及任何其他部件,如UILabelUITextView)在赛格瑞的准备,因为最近分配的控制器的所有视图组件尚未初始化(在这个时候,他们都是nil),他们只将当showController被呈现(并且它的视图被加载).

您必须NSString在显示的viewController中创建一个属性,然后在另一个视图控制器中的某个位置创建一个属性,例如viewDidLoad,将textField的文本设置为此属性值.

像这样:

在viewController中将呈现另一个viewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"ViewController2"])
    {
        ViewController2 *vc2 = [segue destinationViewController];
        vc2.myString = self.textField.text;
    }
}
Run Code Online (Sandbox Code Playgroud)

在提出的viewController里面:

- (void)viewDidLoad
{
    [super viewDidLoad];

    (...)
    self.textField.text = self.myString;
}
Run Code Online (Sandbox Code Playgroud)

  • 最后!!谢谢您的回答. (3认同)