我的第二个viewController丢失了数据

时间:2014-01-02 17:50:44

标签: ios uiviewcontroller

我有两个视图控制器的app,我在我的第一个视图控制器中通过Label和TextField中的NSStrings键入值,当我按下导航按钮时,转到我的第二个视图控制器。当我回到我的第一个视图控制器时,我输入了早期值。但是当我接下来我去第二个视图控制器时 - 通过Label和TextField中的NSStrings输入的值消失。如何解决这个值保存的问题?我试图使用强大和复制属性,但这对我没有帮助。  我使用segue和storyboards,segue with modal type,我使用1个导航控制器作为第一个视图控制器。我只获得了模态类型的代码。第一个视图控制器是导航的根

UPDATE 用户在第一个和第二个VC中输入NSSting等值。在第一个和第二个VC的导航栏上有条形按钮,并且该用户将抛出VC

在第一个VC中键入数据 - >转到第二个 - >在第二VC中键入数据 - >转到第一个(它保存的数据) - >转到第二个(它丢失了数据)

我使用该代码从第二个返回第一个VC:
     [self dismissViewControllerAnimated:YES completion:nil];

1 个答案:

答案 0 :(得分:0)

Segues总是实例化新的控制器,所以当你第二次进入第二个控制器时,你实际上是去了那个控制器的新实例。如果要转到同一个实例,则不能使用segue。相反,您应该在第一个控制器中创建一个指向第二个属性的属性,第一次执行该属性,第一次转到它,但不在任何后续演示中(放入if子句,如果控制器已经存在,提出它,如果没有,首先实例化然后呈现它)。下面的示例假设您有一个类SecondViewController的自定义控制器,并且您已在故事板中为其指定了标识符“Second”。

@property (strong,nonatomic) SecondViewController *secondVC;

-(IBAction)presentSecondController:(UIButton *) sender {
    if (! self.secondVC) {
        self.secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"Second"];
    }
    [self presentViewController:secondVC animated:YES completion:nil];
}