首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS UIViewAnimation不工作

iOS UIViewAnimation不工作
EN

Stack Overflow用户
提问于 2012-12-14 03:55:59
回答 2查看 218关注 0票数 0

我有一个主细节应用程序,当细节视图出现并且字符串为空时,我希望它通过UIViewAnimationFlip呈现一个新视图。动画正在工作,但它一直翻转到自己,而不是我启动的视图控制器。任何帮助都是最好的!

代码语言:javascript
复制
- (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];
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-14 05:02:57

我同意你应该以模态的方式来做这件事,而不仅仅是添加一个子视图。在示例代码中,您要设置两次动画,因为presentviewcontroller方法已经在设置自身的动画了。尝试移除其他动画代码,如下所示:

代码语言:javascript
复制
LoginViewController *login = [[LoginViewController alloc] init];
login.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentViewController:login 
                   animated:YES 
                 completion:nil];
票数 1
EN

Stack Overflow用户

发布于 2012-12-14 05:21:14

我的建议很简单:

代码语言:javascript
复制
- (void)viewDidAppear:(BOOL)animated {

    if (masterView.parserURL == nil) {

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

        login.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

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

注意,这里有一个有趣的问题,即登录屏幕应该如何更新masterView中的parserURL字段。您可以向登录控制器添加一个指向masterView的指针的属性,以便它具有更新parserURL的机制。因此,它可能类似于:

代码语言:javascript
复制
- (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:

代码语言:javascript
复制
self.masterView.parserURL = ... // set it as appropriate
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13867434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档