翻转视图时出现问题

时间:2009-03-25 16:30:30

标签: iphone cocoa-touch

我在查看翻转时遇到了一些麻烦。我在View Controller中有以下代码:

- (void)loadFlipsideViewController {
    ProblemViewFlipController *viewController = [[ProblemViewFlipController alloc] initWithNibName:@"ProblemViewFlip" bundle:nil];
    self.problemViewFlipController = viewController;
    [viewController release];
}


- (void) flipView {

    if (problemViewFlipController == nil) {
        [self loadFlipsideViewController];
    }

    UIView *mainView = self.view;
    UIView *flipView = problemViewFlipController.view;

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];

    [UIView setAnimationTransition:([mainView superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight) forView:self.view cache:YES];

    if ([flipView superview])
    {
        [flipView removeFromSuperview];
        [self.view addSubview:mainView];
    }
    else
    {
        [mainView removeFromSuperview];
        [self.view addSubview:flipView];
    }

    [UIView commitAnimations];
}

问题是,当我调用flipView时,视图被替换为空白视图(即我正在翻转的视图中没有显示)。

我有什么明显的遗失吗? (我怀疑有!)

2 个答案:

答案 0 :(得分:2)

不是正面的,但我认为您需要使用'控制器'来翻转视图。看起来你正在使用其中一个翻转视图作为控制器。只需添加根控制器即可翻转视图。

这样的代码应该可以在根控制器上运行:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; // self.view is the root controller's view
[mainViewController viewWillAppear:YES];
[flipViewController viewWillDisappear:YES];
[flipViewController.view removeFromSuperview];
[self.view  addSubview:mainViewController.view];
[flipViewController viewDidDisappear:YES];
[mainViewController viewDidAppear:YES];
[UIView commitAnimations];

答案 1 :(得分:0)

根据变量名称,它看起来像是从XCode获得的默认“Utility”应用程序模板改编而来。如果模板项目有效,而你的模板没有,那么你显然已经改变了一些不应该有的东西: - )

机会是,控制器中应该指向视图的插座之一,不是。仔细检查您的笔尖,并检查调试器中的插座值。如果所有其他方法都失败了,请从模板重新开始,看看它何时停止工作。