在日常的开发中,多控制器之间的跳转除了使用push的方式,还可以使用 present的方式,present控制器时,就避免不了使用 presentedViewController.presentingViewController ,这两个概念容易混淆,简单介绍一下. 1:present 控制器的使用 使用present的方式,从一个控制器跳转到另一个控制器的方法如下: [self presentViewController:vc animated:YES completion:^{ }]; 2:…
#import "TestViewController.h" #import "OneViewController.h" 在TextViewController写入点击事件: - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self click]; } - (void)click { OneViewController * vc = [OneVi…
当我们用present进行界面跳转时,会涉及到一个传向关系. 比如:A -> B    界面A跳转界面B A.presentedViewControlle = B B.presentingViewController = A 这就是两者间的关系. 所以有以下使用场景: 当界面B又跳转了界面C,在C关闭的时候,我们也想关闭B,可以这样: let B = self.presentingViewController self.dismiss(animated: true) { B?.dismiss(a…
解释两个属性:presentingViewController 和 presentedViewController A----(present)-----B----(present)-----C 1.那么 A 就是 B 的 presentingViewController.2.C 就是 B 的 presentedViewController. 以B为参照:A为presentingViewController, C为presentedViewController 如题,苹果自带的是没有直接dism…
一:UIViewController模态跳转 //展示模态视图 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion NS_AVAILABLE_IOS(5_0); //关闭模态视图 - (void)dismissViewControllerAnimated: (BO…
iOS 视图控制器转场详解 前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标有了大幅度的增长,多谢唐巧前辈的推荐.有些人问我相关的问题,好吧,目前为止就几个,由于没有评论系统,实在不方便交流,但我也没把博客好好整理,一直都在简书上写博客,大家有问题请移步我的简书本文章的页面.关于交流,我想说这么几点: 1.问问题就好,不要加上大神大牛之类的称呼,与本文有关的问题我尽量回答:不负责解析转场动画,看心情回答. 2.去我的简书下留言是最…
一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳转 相…
// // TWFXSecondViewController.m // DemoMultiView // // Created by Lion User on 12-12-24. // Copyright (c) 2012年 Lion User. All rights reserved. // #import "TWFXSecondViewController.h" #import "TWFXThirdViewController.h" @interface TWF…
参考:http://www.mamicode.com/info-detail-469709.html 一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (…
在处理 URL Router 跳转的时候,我们经常需要得到 当前最上层的视图控制器 和 当前最上层的导航控制器 来进行视图跳转或者方法调用.- (UIViewController *)currentViewController { UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow; UIViewController *vc = keyWindow.rootViewController; while (vc.pres…
.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳转 相信…
UIPresentationController是ios8.0的新特性哦,使用需要注意 先上一个效果图 第一步: 连线选择segue类型为,present Modally 第二步:需要演示的控制器,自定义为HJCPopViewController 第三步:新建一个类HJCPopoverPresentationController,继承UIPresentationController 第四步:在HJCPopoverPresentationController类中实现以下代码 // 遮罩视图 laz…
一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有两种方法. 1.通过方法 - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳转 相…
自定义转场动画 个人理解为重写了被弹出控制器的modal样式,根据自己的样式来显示modal出来的控制器 例:presentViewController(aVC, animated: true, completion: nil) 1.为了实现如图,modal出来的aVC控制器有下图这样的效果 首先,需要在modal出来之前,设置aVC的自定义转场动画的样式为自定义(UIModalPresentationStyle.Custom) 其次,设置自定义转场动画的代理,协议 UIViewControll…
导航控制器和视图控制器在添加控制器的区别 1. 因导航控制器拥有导航栈,有一个普通视图控制器都没有的数组viewControllers,加入该数组中的视图控制器默认以push的方式进入导航栈.导航控制器有个[UINavigationController alloc] initWithRootViewController:rootVC]; 的初始化方法,调用该方法相当于把rootVC加入数组viewControllers的第一个位置,作为栈底部的rootVC是不会被pop出去的,与导航控制器共生死…
原文:http://blog.sina.com.cn/s/blog_881ed8500102vo38.html UINavigationController 中有visibleViewController和topViewController 今天通过一个demo了解了他们的异同 visibleViewController 就是当前显示的控制器 topViewController 是某个导航栈的栈顶视图 visibleViewController和哪个导航栈没有关系,只是当前显示的控制器,也就是说…
首先是UIPresentationController,这个控制器给modal新的viewController提供了下一步的view和转场的管理,从一个viewController被modal出来到被dismiss,都是用UIPresentationController来管理视图被展现的过程的各个方面.可以添加自定义动画,对大小改变做出响应,并且可以管理其他viewController是如何显示在屏幕的. 在初始化时,重写 initWithPresentedViewController:pres…
//返回四大tab页面 + (void)gobackToTabarController { UINavigationController* selectedTabNavController = (UINavigationController *)[QZoneUIAppDelegate shareInstance].qqTabbarController.selectedViewController; UIViewController* pCurController = (UIViewControl…
参考: https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/DefiningCustomPresentations.html 首先说下需求,就是一个自定义的模态弹出框,这种需求应该很广 对于弹出框,我们首先想到的就是UIAlertController这个类.但是这个类只能创建两种类型的弹出框,actionSheet和alert.要想使用这个类实现上面的效果,很难,之前为了…
-(void)dismissToRootViewController { UIViewController *vc = self; while (vc.presentingViewController) { vc = vc.presentingViewController; } [vc dismissViewControllerAnimated:YES completion:nil]; }…
我们的APP从启动到进入主页面.是通过presentViewController构造了一个ViewController序列,类似于首页 -> 登陆页 -> 启动载入页 -> 主页面 当中.在启动载入页的viewDidAppear方法里做了非常多逻辑处理: -(void) viewDidAppear:(BOOL)animated{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(…
//dismiss到根视图 - (void)dismissToRootViewController{ UIViewController *vc = self; while (vc.presentingViewController) { vc = vc.presentingViewController; } [vc dismissViewControllerAnimated:YES completion:nil]; }//这种更有效 UIViewController *vc =self.prese…
当遇到: A presentViewController B ,  B presentViewController C,  C presentViewController D,问如何从D一下子回到A,麻烦一点的办法就是一级一级的dismiss. 下面来说说我的办法: 首先,实现 BaseViewController 作为所有视图控制器的基类,然后在基类中实现返回最下层viewController的办法(注意:最底层是UIViewController,所有BaseViewController都放在…
我们都知道dismissViewControllerAnimated:completion:方法是针对被present出来的控制器的,一般我们这样使用:在一个控制器中present另外一个控制器A,然后在A中执行dismissViewControllerAnimated:completion:让自己消失. 在ViewController中: AViewController *av = [[AViewController alloc]init]; UINavigationController *n…
dismissViewControllerAnimated:completion:在应用中运行正常,就是不知道为什么出现了几秒钟的延迟: [api loginWithUsername:[dict objectForKey:@"username"] andPassword:[dict objectForKey:@"password"] andSuccessBlock:^(id json) { NSLog(@"DONE... %@", [json o…
在使用dismissViewControllerAnimated退出当前视图的时候,理论上,该视图对象就会被清除了, 也就是说会进去当前类的析构函数deinit里面.但是有时候会发现,dismiss之后并没有进入析构,往往就会因此出现一些奇怪的现象 有时候没有出现问题,也不能代表,我们就可以不管它了. 之所以没有进入析构,是因为当前对象包含了没有释放的委托存在.比如我这个视图在打开之后,关联了这个委托事件 这种情况下,你在dismiss之后无论如何也进入不了析构,所以你需要在dismiss之前手…
最近使用iOS8 Sdk(xcode6.1.1)使用Show Segue功能,V_A视图push到V_B视图,然后想通过使用按键返回V_A,我记得ios6的时候可以使用[self dismissViewControllerAnimated:YES];就能够返回上一个视图A,结果发现ios8不行,最后发现一个方法[self.navigationController popViewControllerAnimated:YES]可以实现方法; stackoverflow:http://stackove…
作为一个viewController(VC),想要消失的时候可以从parent VC里面调用dismissModalViewControllerAnimated来消去改VC,也可以在该VC里面手动调用self dismissModalViewControllerAnimated:YES来消去自己. 不过发现有时候调用dismissModalViewControllerAnimated,没有效果,百般试验无果下想起来之前是push进来的,换成 self.navigationController p…
UIViewController类详解: 通过Nib文件初始化 init(nibName nibName: String?, bundle nibBundle: NSBundle?) println("nibName = \(self.nibName)")                                    //nibName println("nibBundle = \(self.nibBundle)")                     …
UIViewController 在MVC模式中就是C.关于MVC,可以看 UIViewController 主要具有什么功能呢? View Management When you define a new subclass of UIViewController, you must specify the views to be managed by the controller. A typical view hierarchy consists of a view with flexibl…