dismiss返回控制器,怎么返回dismiss 到指定控制器器

统一设置导航控制器返回按钮 - 简书
统一设置导航控制器返回按钮
1.跳转界面发现TabBar条还显示,我们不想让它显示在push的时候隐藏底部条,push谁的时候需要隐藏底部条,就找到对应控制器去隐藏注意点:一定要在Push之前设置settingVc.hidesBottomBarWhenPushed=YES;2.导航控制器跳转到下一个界面,默认有返回本界面的按钮问题:系统的返回按钮不能满足我们的需求3.我们要自定义一个按钮,来实现项目需求4.如何修改?由上一个控制器设置backBarButtonItem当前控制器的leftBarButtonItem来修改5.发现自定义返回按钮没有在最左边,如何修改?通过frame不可以?
控件位置系统设定好了,不能修改frame可以通过内边距来修改backButton.contentEdgeInsets=UIEdgeInsetsMake(0, -25,0,0);6.在项目中,很多地方都需要修改返回按钮,如何一次性修改呢?思考:通过apparence可以修改通过apparence修改,要先拿到对应的类,返回按钮对应的类UIBarButtonItem会把多有这个类的按钮都修改成返回按钮,rrightBarButtonItem也会变成返回按钮,不可行那么我们什么时候需要修改返回按钮?
push的时候,那我们拦截push
在里面设置就可以了在哪里重写push?
在自定义导航控制器里面注意:重写push方法,一定要调用super push方法
设置返回按钮代码一定要在super push 之前__func__:方法
获取当前方法在哪个类中调用我们发现跟控制器也有返回按钮, 这不是我们需要的我们要判断下是不是跟控制器,跟控制器的话就不设置返回按钮怎么判断?通过导航控制器子控制器的个数
个数打印一下就知道怎么设置了
/xiaotian666/
纯技术分享,不废话,不吹嘘
如有不足和错误,欢迎指正.
/lgp123456如,从 rootViewControlle(presentViewControlle)到
ViewControlle1,再从ViewControlle1(presentViewControlle)到
ViewControlle2。现在实现从(ViewControlle2)直接dismissViewControlle
到 rootViewControlle
&1. dismiss两个视图控制器的按钮方法
该视图控制器(ViewControlle2)是上个视图控制器(ViewControlle1)
presentViewControlle 的控制器
- (void)dismissButton:(UIButton *)sender
当本视图控制器dismiss 完成后注册通知,名为“dismiss”
[self dismissViewControllerAnimated:NO completion:^{
[[NSNotificationCenter defaultCenter] postNotificationName:@&dismiss& object:self];
&2. 在 ViewControlle1.m
中的 viewWillAppear:
方法中监测上一个视图控制器dismissViewControlle的通知,监测到之后就执行dismissSelf:
- (void)viewWillAppear:(BOOL)animated
NSNotificationCenter *notification = [NSNotificationCenter defaultCenter];
[notification addObserver:self selector:@selector(dismissSelf:) name:@&dismiss& object:nil];
3.得到通知执行的方法,让 ViewControlle1 dismissViewControlle到rootViewControlle
- (void)dismissSelf:(NSNotificationCenter *)notification
[self dismissViewControllerAnimated:NO completion:^{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@&dismiss& object:nil];
4.移除通知,可以在 viewDidDisappear:方法中执行
- (void)viewDidDisappear:(BOOL)animated
[[NSNotificationCenter defaultCenter] removeObserver:self name:@&dismiss& object:nil];
}移除通知的地方自己可以根据自己的项目而用,该什么时候移除、在哪个方法中移除等考虑
本文已收录于以下专栏:
相关文章推荐
delegate文件的属性之一为window,而UIwindow又具有一个rootViewController属性,而UIViewController又具有view属性,rootController的...
转自:CCcactus  ios视图控制器
在iOS中,动态界面是通过视图控制器来管理的,视图控制器是UIViewController的实例。
一个视图控制器管理一个单独的视图,当然,这个视图还有...
网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。
I:控制器和视图的基础概念
1.控制器的概念
控制器在ASP.NET MVC3当中是最终处理客户端请求的一个实现,他有个一硬性条件就是必须实现System.Web.Mvc.IControl...
UIViewController:视图控制器, 作用: 控制视图显?, 响应事件。分担AppDelegate的工作, 实现模块独立,提高复?用性.
视图控制器可以控制视图大小变换, 布局视图, ...
视图控制器简介
有两种方法实现一个视图控制器到屏幕上:把它嵌入到一个容器视图控制器或者是直接呈现它。容器视图控制器提供一个应用程序主要的导航功能,但是present 视图控制器也是一个重要的导航工具。你可以直接使用p...
#pragma mark -- 容器视图控制器
//其实就是一个viewController 上面放了两个或多个viewController,用父viewController切换子类控制器
视图控制器的层次结构,就是一种在你的应用程序中视图控制器所定义的每个视图控制器都需要的行为之间的关系。简单点说,就是为视图控制器所添加的各种约束之间的关系。UIKit 期望你按照规定的方法来使用视图控...
MVC设计模式
MVC设计模式是一种面向对象思想的设计模式
M(Model):模型,用于提供和存储程序执行过程中所需要的数据。
V(View):视图,用户可见或可交互的界面元素。
C(Controll...
视图视图是UIView类的实例,负责在屏幕上定义一个矩形区域。在iPhone的应用程序中,视图在展示用户界面及响应用户界面交互方面发挥关键作用。每个视图对象都要负责渲染视图矩形区域中的内容,并响应该区...
他的最新文章
讲师:唐宇迪
讲师:卿来云
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)presentViewController是经常会用到的展现ViewController的方式,而显示和去除presentViewController也是很简单的,主要是下面两个方法:
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void
(^ __nullable)(void))completionNS_AVAILABLE_IOS(5_0);
- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void
(^__nullable)(void))completionNS_AVAILABLE_IOS(5_0);
但是有的时候我们的需求很特殊,比如在一个presentViewController里要present另一个viewController,甚至再present一个viewController,然后可能在某个时候APP发出一条消息,需要一下子dismiss掉所有的viewController,回到最开始的视图控制器,这时候该如何办呢?下面一起来看看解决办法?
首先,必须知道现在整个APP最顶层的ViewController是哪个,我的做法是建立一个父视图控制器,称为BaseViewController,然后在该视图控制器的viewWillAppear进行记录操作,使用视图控制器的presentingViewController属性记录当前视图控制器,然后对于需要进行present操作的视图控制器,继承于BaseViewController,那么每次present一个新的视图控制器,父视图控制器的viewWillAppear方法都会被执行:
-(void)viewWillAppear:(BOOL)animated{
AppDelegate *delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
delegate.presentingController =
最后,在需要处理时间的地方(如:点击事件),在点击事件的方法中加入如下代码,即可回到最初视图控制器显示页面:
- (void)clickButton:(id)sender {
AppDelegate *delegate=(AppDelegate *)[[UIApplicationsharedApplication]delegate];
if (delegate.presentingController)
UIViewController *vc =self.presentingViewC
if ( !vc.presentingViewController )
//循环获取present出来本视图控制器的视图控制器(简单一点理解就是上级视图控制器),一直到最底层,然后在dismiss,那么就ok了!
while (vc.presentingViewController)
vc = vc.presentingViewC
[vc dismissViewControllerAnimated:YEScompletion:^{
属性解析:
presentedViewController:The view controller that is presented by this view controlller(read-only),被本视图控制器present出来的的视图控制器(只读)
presentingViewController:The view controller that presented this view controller. (read-only),present出来本视图控制器的视图控制器(只读)
本文已收录于以下专栏:
相关文章推荐
有时候需要登录、注册会通过presentViewController的方式弹出;但是登录可能可以去注册,注册可以去登录,从而造成页面层级present的过多
想要在注册、登录成功后,回到(dismi...
/yingkong1987/p/3343937.html当遇到:A presentViewController B ,
B presentVie...
网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。
获取当前rootviewcontroller 并弹出模态层 
   [[UIApplication
sharedApplication].keyWindow.rootViewController
...
从视图控制器A  presentViewController 到viewControllerB 再到c...等
获取A,A执行dismissViewController即可
//如果A已经...
在 iOS 中,当使用- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL...
一、主要用途
  弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerControll...
如题,现在我们控制页面present到一个UINavigationController页面去SCMyCardDesignCollectionViewController
*vc = [[SCMyCa...
presentViewController是经常会用到的展现ViewController的方式,而显示和去除presentViewController也是很简单的,主要是下面两个方法:
如何打开多个界面之后按返回键直接退出应用1、自定义广播接收者每个新开的界面继承下面的父类主活动,并在活动中实现以下代码public class Activity1 extends BaseActivi...
视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画,其中切换方法如下:– presentViewContr...
他的最新文章
讲师:唐宇迪
讲师:卿来云
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)1753人阅读
iOS 视图控制器(20)
当我们自定义继承UIViewController视图控制器的基类视图控制器时,会新增返回到上级的视图控制器方法,于是就要区分,返回时使用 pop 的方法,还是使用dismiss 的方法了。
- (void)backPreviousController
if (self.presentingViewController)
[self dismissViewControllerAnimated:YES completion:nil];
[self.navigationController popViewControllerAnimated:YES];
- (void)backPreviousController
if (self.navigationController.topViewController == self)
[self.navigationController popViewControllerAnimated:YES];
[self dismissViewControllerAnimated:YES completion:nil];
- (void)backPreviousController
if ([self.navigationController.viewControllers.firstObject isEqual:self])
[self dismissViewControllerAnimated:YES completion:nil];
[self.navigationController popViewControllerAnimated:YES];
- (void)backPreviousController
if ([self.navigationController.viewControllers indexOfObject:self] == 0)
[self dismissViewControllerAnimated:YES completion:nil];
[self.navigationController popViewControllerAnimated:YES];
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:422143次
积分:9480
积分:9480
排名:第1959名
原创:540篇
转载:178篇
评论:29条
(8)(7)(18)(12)(14)(6)(4)(25)(14)(11)(36)(19)(61)(25)(15)(28)(39)(63)(2)(4)(3)(1)(3)(1)(4)(6)(38)(1)(28)(37)(2)(4)(3)(5)(11)(13)(39)(31)(78)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 ios 返回指定控制器 的文章

 

随机推荐