0

我有一个主详细信息应用程序,当出现详细信息视图并且字符串为空时,我希望它通过UIViewAnimationFlip. 动画正在工作,但它不断翻转到自身,而不是我启动的视图控制器。任何帮助都会很棒!

- (void)viewDidAppear:(BOOL)animated {

    if (masterView.parserURL == nil) {

        LoginViewController *login = [[LoginViewController alloc] init];

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.8];
        [UIView setAnimationTransition:UIModalTransitionStyleFlipHorizontal
                               forView:self.view
                                 cache:YES];

        [self.navigationController presentViewController:login 
                                                animated:YES 
                                              completion:nil];

        [UIView commitAnimations];
    }
}
4

2 回答 2

1

我同意您应该以模态方式执行此操作,而不仅仅是添加子视图。在您的示例代码中,您制作了两次动画,因为 presentviewcontroller 方法已经在为自己制作动画。尝试删除其他动画代码,如下所示:

LoginViewController *login = [[LoginViewController alloc] init];
login.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentViewController:login 
                   animated:YES 
                 completion:nil];
于 2012-12-13T21:02:56.750 回答
0

我只是简单地建议:

- (void)viewDidAppear:(BOOL)animated {

    if (masterView.parserURL == nil) {

        LoginViewController *login = [[LoginViewController alloc] init];

        login.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

        [self presentViewController:login
                           animated:YES
                         completion:nil];
    }
}

请注意,有一个有趣的问题是登录屏幕应该如何更新parserURL. masterView您可以向登录控制器添加一个指向 的属性masterView,以便它具有更新parserURL. 因此它可能是这样的:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if (masterView.parserURL == nil)
    {
        LoginViewController *login = [[LoginViewController alloc] init];

        login.masterView = masterView;

        login.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

        [self presentViewController:login
                           animated:YES
                         completion:nil];
    }
}

然后您的登录控制器现在可以通过以下方式更新 parserURL:

self.masterView.parserURL = ... // set it as appropriate
于 2012-12-13T21:21:13.897 回答