Ios 阻止视图卸载其数据

Ios 阻止视图卸载其数据,ios,uiviewcontroller,Ios,Uiviewcontroller,这听起来可能是个简单的问题,但我在任何地方都找不到答案 我正在转换观点,一切都很好。我可以在视图之间传递变量和数据,但是当我想返回到以前的视图时,问题就出现了 视图上的任何数据都会消失并删除,就像它没有被传递一样。当然,我不希望在切换到新视图时卸载数据。这可能吗 这就是我在项目中切换视图的方式。有更好的办法吗 TicketStart *backPage=[[TicketStart alloc]initWithNibName:@"TicketStart" bundle:nil]; [self ad

这听起来可能是个简单的问题,但我在任何地方都找不到答案

我正在转换观点,一切都很好。我可以在视图之间传递变量和数据,但是当我想返回到以前的视图时,问题就出现了

视图上的任何数据都会消失并删除,就像它没有被传递一样。当然,我不希望在切换到新视图时卸载数据。这可能吗

这就是我在项目中切换视图的方式。有更好的办法吗

TicketStart *backPage=[[TicketStart alloc]initWithNibName:@"TicketStart" bundle:nil];
[self addChildViewController:backPage];
[self.view addSubview:backPage.view];

当我搜索这个问题时,我所能找到的都是关于传递内容或加载新视图的问题。如果有人问这个问题,很抱歉,但我在任何地方都找不到答案。

我不确定是什么触发了您的视图的更改,因此您必须编写该代码

母公司

@implementation ParentViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.vcOne = [[OneViewController alloc] init];
    [self addChildViewController:self.vcOne];
    [self.view addSubView:self.vcOne.view];
    self.vcTwo = [[TwoViewController alloc] init];
}

-(void)switchViews {
    //logic to animate in view that isn't present
}
@end
视图控制器1

@interface OneViewController ()
@property(strong, nonatomic) UIView *vOne;
@end

@implementation OneViewController
-(UIView*)vOne {
    if(_vOne == nil) {
        _vOne = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height)];
    }
    return _vOne;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self.view addSubView:self.vOne];
}
@end
视图控制器2

@interface TwoViewController ()
@property(strong, nonatomic) UIView *vTwo;
@end
@implementation TwoViewController
-(UIView*)vTwo {
    if(_vTwo == nil) {
        _vTwo = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.view.frame.size.width, self.view.frame.size.height)];
    }
    return _vTwo;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self.view addSubView:self.vTwo];
}
@end

两个视图是否都有一个视图控制器?如果是这样,请设置对这两个视图的强引用,并且在初始时间之后不要重新初始化/分配它们。您正在初始化一个新视图,这就是为什么它为空。(这是同一类的不同视图。)您需要保留在实例变量或属性中创建的第一个视图。@JeffCompton我有两个单独的视图controllers@AaronBrager我将如何按照您描述的方式保持它?您将需要一个父视图控制器来控制这两个视图。父视图控制器应具有对两个视图控制器的强引用,而视图控制器应具有对视图的强引用。