我是要创建一个使用a UINavigationController来呈现下一个视图控制器的应用程序.iOS5有一种新的呈现方法UIViewControllers:
presentViewController:animated:completion:
Run Code Online (Sandbox Code Playgroud)
现在我问我为什么没有完成处理程序UINavigationController?只有
pushViewController:animated:
Run Code Online (Sandbox Code Playgroud)
是否有可能像新的一样创建自己的完成处理程序presentViewController:animated:completion:?
所以.刚刚开始将我的IOS代码转换为IOS7,并遇到了一些问题.
我有一个UINavigationController,它有子ViewControllers,我pushViewController用来显示下一个视图.要创建带有一组图像的视差动画,如果自定义UINavigationController动画一组UIImageViews和我的孩子ViewControllers都具有self.backgroundColor = [UIColor clearColor]透明度.
由于iOS7,UINavController动画它的子vc的方式,通过部分移动当前视图控制器更新,并在顶部推动新的视图控制器,我的视差动画看起来很废话.我看到之前的VC移动了一点然后消失了.有什么办法可以恢复以前的UINavigationControllerpushViewController动画吗?我似乎无法在代码中找到它.
WelcomeLoginViewController* welcomeLoginViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WelcomeLogin"];
[self.navigationController pushViewController:welcomeLoginViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
甚至尝试使用:
[UIView animateWithDuration:0.75
animations:^{
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[self.navigationController pushViewController:welcomeLoginViewController animated:NO];
[UIView setAnimationTransition:<specific_animation_form> forView:self.navigationController.view cache:NO];
}];
Run Code Online (Sandbox Code Playgroud)
有没有人有任何线索?
animation objective-c uinavigationcontroller pushviewcontroller ios7
可以从导航堆栈中弹出一个视图,然后再将其直接推到它上面吗?
我正在尝试为这一部分实现一个平面层次结构,并希望有一个分段控制器,但我不能让分段控制器看起来像我想要的任何东西,因此我为什么要尝试使用导航控制器.
单击按钮时,我执行了以下代码:
[[self navigationController] popViewControllerAnimated:YES];
MapsViewController *aViewController = [[MapsViewController alloc]
initWithNibName:@"MapsViewController" bundle:nil];
[self.navigationController pushViewController:aViewController animated:NO];
[aViewController release];
Run Code Online (Sandbox Code Playgroud)
它突然出现,但没有任何推动的迹象!任何帮助,将不胜感激.
uinavigationcontroller popviewcontroller pushviewcontroller ios
是否可以显示pushViewController动画外观,presentModalViewController但具有背景功能pushViewController?
iphone animation pushviewcontroller presentmodalviewcontroller ios
所以我有一个登录视图,成功登录后,它会进入导航控制器的第一个视图,然后用户可以更深入地进入设置视图,然后进入注销视图.此注销应该将用户带回登录视图(不是导航控制器的一部分).它适用于以下代码:
let loginViewController = self.storyboard!.instantiateViewControllerWithIdentifier("Login") as? LoginViewController
self.navigationController!.pushViewController(loginViewController!, animated: true)
Run Code Online (Sandbox Code Playgroud)
但登录视图显示顶部的导航栏,它不应该这样做,可能还有self.navigationController!.pushViewController我应该使用的东西吗?
我刚看了2011年WWDC关于"实现UIViewController遏制"的演示文稿(这里是视频的链接)
他们提到了将viewControllers添加到屏幕的两种方法,我希望对最佳实践做一些澄清......
addChildViewController/removeFromParentViewController
与@property(非原子,只读)NSArray*childViewControllers一起使用[self transitionFromViewController:currentView toViewController:nextView duration: options: animations: completion:];
pushViewController:animated:/ popViewControllerAnimated
他们很快就在演示文稿中快速浏览了这个
在我的应用程序中,我使用所有自定义viewControllers,直到今天我一直使用以下方法管理它们:
[nextController performSelector:@selector(setDelegate:) withObject:self];
[currentPageController.view removeFromSuperview];
[self.view addSubview:nextController.view];
Run Code Online (Sandbox Code Playgroud)
但我现在明白了,这是不好的做法,我想知道什么是使用"addChildViewController",什么是使用"pushViewController"正确的方法正确的方法是什么?
我非常感谢你对此事的看法!
最近我更新了我的xcode项目以使用iOS 7,但我遇到了一个大问题.因为我的整个应用程序只有一个背景图像(UIImageView添加到关键窗口)并且所有视图都是透明的,所以我在推UIViewController时遇到问题,因为推送的视图控制器与之前的视图重叠(你可以在这里看到它:http:/ /grab.by/qp0k).我可以预测这是因为在iOS 7中推送转换已经改变,因为现在它滑动了半个屏幕.也许有人知道如何解决这个问题?
这就是我设置关键窗口的方法
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIImageView *background = [[UIImageView alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
background.image = [UIImage imageNamed:@"background.png"];
UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:self.viewController];
self.window.rootViewContro??ller = navi;
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)
之后当用户点击"开始锻炼"按钮时,我会一如既往地推送我的下一个视图:
workoutView *w = [[workoutView alloc]initWithNibName:@"workoutView" bundle:nil];
[self.navigationController pushViewController:w animated:YES];
Run Code Online (Sandbox Code Playgroud) 我推ViewController它含有不太多的意见,UIScrollView这里面包含10次,我有一个单身ViewController,没有再次释放和分配一次又一次地推ViewController,所以所有的事情,我在做viewDidLoad(),和viewWillAppear(),但动画是缓慢的,波涛汹涌,它可能是什么?
简而言之: 我如何从呈现的ViewController中推送PushController?
简单来说 :
我有MainViewController,我点击按钮时有一个按钮,我正在展示一个叫做的视图LoginViewController.
在这个页面上(LoginViewController),我再次button点击它,我尝试推动我的视图控制器(称为HomeViewController)它不会推动.
这是我的代码片段,
MainViewController.m
- (IBAction)LoginClicked:(id)sender {
LoginViewController *vc = [[LoginViewController alloc] init];
[self presentViewController:vc animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
LoginViewController.m
- (IBAction)buttonActionMethodOnLoginView:(id)sender{
NSLog(@"viewControllers %@",APPDELEGATE.nav.viewControllers);
//LoginViewController is not in this array
HomeViewController *obj = [[HomeViewController alloc] init];
[self.navigationController pushViewController:obj animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用.另外,我a stack of view controllers之前打印过pushed,但它没有LoginViewController.因此,无需添加LoginViewController到a stack of view controllers,我怎样才能pushed到HomeViewController从LoginViewController?
当我从中获取时HomeViewController …
objective-c uinavigationcontroller pushviewcontroller ios presentviewcontroller
是什么beetween调用差异presentModalViewController和pushViewController,当:
这只是为了能够从第一个推出的视图回来吗?Woooaaaaaa .....
我想差异在于其他地方和更深层次.不是吗?
cocoa-touch uinavigationcontroller pushviewcontroller presentmodalviewcontroller ios
ios ×5
animation ×2
ios7 ×2
iphone ×2
objective-c ×2
addchild ×1
cocoa-touch ×1
handler ×1
swift ×1
xcode5 ×1