2013-04-16 46 views
0

我在我的iOS應用程序中翻轉兩個子視圖時遇到了困難。它的設置方式是我在界面文件中創建了一個視圖。當視圖加載時,視圖1應該出現在該視圖中(通過使用addSubview來實現)。當在View1上按下按鈕時,它應該翻轉以顯示view2。在容器視圖中翻轉子視圖

在StackOverflow上的各種問題,我實現了下面的代碼:

-(void)LetUsFlip 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:_containerView cache:YES]; 

    if ([self.view1 superview]) 
    { 
     NSLog(@"Show View 2"); 
     [view1 removeFromSuperview]; 
     [_containerView addSubview:view2]; 
     [_containerView sendSubviewToBack:view1]; 
    } 
    else 
    { 
     NSLog(@"Show View 1"); 
     [view2 removeFromSuperview]; 
     [_containerView addSubview:view1]; 
     [_containerView sendSubviewToBack:view2]; 
    } 

    [UIView commitAnimations]; 
} 

當我運行這段代碼,第一翻轉動畫正常工作,即查看2所示按下按鈕。但是當我再次按下視圖2中的按鈕時,動畫發生並且視圖1是而不是顯示 - 給出空白屏幕。 View1和View2上的按鈕分別調用上述方法。 NSLog也完全按照它應該的方式工作,但是在動畫方面存在問題。

謝謝。

+0

如何聲明'view1'和'view2'?弱,強? – zoul

+0

嗨zoul,它的聲明爲:@property(弱,非原子)IBOutlet UIScrollView * view1; –

回答

2

view1在第二次轉換期間nil以外的東西嗎?它存儲在一個弱的屬性中,這意味着它可以在你從它的超級視圖中移除它時被解除分配。嘗試將屬性聲明更改爲strong並查看是否有幫助。

+0

它的工作..謝謝! :) –

+0

太好了,很高興幫助。 – zoul