在容器视图中翻转子视图

时间:2013-04-16 15:24:57

标签: iphone ios objective-c

我在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。但是当我再次按下View 2中的按钮时,动画就会出现,而View 1显示为 - 给出一个空白屏幕。 View1和View2上的按钮分别调用上述方法。 NSLog也可以按照它应该的方式工作,但是我遇到动画问题。

感谢。

1 个答案:

答案 0 :(得分:2)

第二次转换期间,view1nil以外的其他内容吗?它存储在一个弱属性中,这意味着当你从超级视图中删除它时它可以被释放。尝试将属性声明更改为strong,看看是否有帮助。

相关问题