我想将viewControllers推送到我的主viewController上的一个区域。据我所知,除非您将它添加到UIWindow,否则不能使用NavigationController。
此动画提醒UIScrollView水平滚动。但我想让它像NavigationController一样工作。当用户按下特定操作时,ViewControllers将被更改。
ViewController2将成为带有其他按钮的tableView。
ViewController3将成为一个从tableView更改对象的表单。
Animation of viewControllers http://i55.tinypic.com/3589ysn.png
答案 0 :(得分:7)
我最近在UIView中找到了一种方法,可以创建切换视图的“推送或弹出”感觉。
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion
这直接来自UIView文档,因此我建议您查看UIView Class Reference以查看具体信息。基本上,它将视图切换到另一个视图,而options:
部分允许您从多种不同的样式中进行选择。
答案 1 :(得分:2)
我实际上通过玩UIView动画来解决它。
-(void)slideInView:(UIView*)newView toView:(UIView*)oldView {
/* Sets the view outside the right edge and adds it to mainView */
newView.bounds = mainView.bounds;
newView.frame = CGRectMake(newView.frame.origin.x + 784, newView.frame.origin.y, newView.frame.size.width, newView.frame.size.height);
[mainView addSubview:newView];
/* Begin transition */
[UIView beginAnimations:@"Slide Left" context:oldView];
[UIView setAnimationDelegate:self];
[UIView setAnimationDelay:0.0f];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDidStopSelector:@selector(slideInCompleted:finished:context:)];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
newView.frame = CGRectMake(0,0, newView.frame.size.width, newView.frame.size.height);
oldView.frame = CGRectMake(oldView.frame.origin.x - 784, oldView.frame.origin.y, oldView.frame.size.width, oldView.frame.size.height);
[UIView commitAnimations];
}
-(void)slideInCompleted:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
UIView *view = (UIView*)context;
[view removeFromSuperview];
}
并使用它
menuController = [[MenuViewController alloc] init];
[self slideOutView:menuController.view toView:loginController.view];
[oldController release];
记得你已经分配了一个UIViewController,你需要在使用它时释放它!在示例中,我完成了loginController并将其释放。
答案 2 :(得分:1)
绝对没有办法在没有UINavigationController
的情况下“推”原生任何控制器。但是,您可以进出视图的动画。
使用您发布的示例,看起来简单的UIScrollView
将是您最简单的选择。
答案 3 :(得分:0)
我使用的是UIScrollView,因为它可以捕捉到内置的“页面”。你也可以使用setContentOffset滚动到任何部分:动画:。