2013-07-26 59 views
0

這可能聽起來像一個簡單的問題,但我無法在任何地方找到答案。停止卸載其數據的視圖

我在視圖之間切換,一切都很好。我可以在視圖之間傳遞變量和數據,但是當我想回到以前的視圖時會出現問題。

視圖上的任何數據都消失了,就好像它沒有被傳遞一樣。當然,當我切換到新視圖時,我不希望數據卸載。這可能嗎?

這是我在我的項目中的視圖之間切換的方式。有沒有更好的辦法?

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

當我搜索這個問題時,我能找到的所有問題都是關於傳遞或加載新視圖的問題。對不起,如果這個問題已被問到,但我無法在任何地方找到答案。

+0

你有兩個視圖中的一個視圖控制器?如果是這樣,請爲它們設置一個強有力的參考,並且在初始時間之後不要重新初始化/分配它們。 – JeffRegan

+0

您正在初始化新視圖,這是它爲空的原因。 (這是同一個類的不同視圖。)您需要掛在您創建的第一個視圖上,無論是在實例變量中還是屬性中。 –

+0

@JeffCompton我有兩個單獨的視圖控制器 – leo0935xbl

回答

0

我不確定是什麼觸發了你的視圖改變,所以你必須編寫該代碼。

家長

@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 

視圖控制器的一個

@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 

視圖控制器兩

@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