我有一个主细节应用程序,当细节视图出现并且字符串为空时,我希望它通过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];
}
}发布于 2012-12-14 05:02:57
我同意你应该以模态的方式来做这件事,而不仅仅是添加一个子视图。在示例代码中,您要设置两次动画,因为presentviewcontroller方法已经在设置自身的动画了。尝试移除其他动画代码,如下所示:
LoginViewController *login = [[LoginViewController alloc] init];
login.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:login
animated:YES
completion:nil];发布于 2012-12-14 05:21:14
我的建议很简单:
- (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的机制。因此,它可能类似于:
- (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 appropriatehttps://stackoverflow.com/questions/13867434
复制相似问题