首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UINavigationController 导航控制器概念属性方法

概念 UINavigationController 继承于 UIViewController 包含:viewcontrollers、NavigationBar、Toolbar 导航控制器是一个堆栈结构,...(通过navigationController. navigationBar方式可以调用) NavigationBar管理多个NavigationItem,和NavigationController一样都是用...*topViewController; 2、获取当前界面显示的controller @property(nullable, nonatomic,readonly,strong) UIViewController...animated:(BOOL)animated; 3、管理视图控制器操作 (1)压入新的视图控制器 - (void)pushViewController:(UIViewController *)viewController...继承该父类的控制器调用此方法都可以隐藏push来的控制器底部的TabBar - (void)pushViewController:(UIViewController *)viewController animated

2.1K60

# iOS导航栏控制Tips

1.导航栏的显示与隐藏 导航栏的显示与隐藏,分两种情况: 1.从不显示导航栏的页面push到显示导航栏的页面。 2.从显示导航栏的页面Push到不显示导航栏的页面。...针对以上两种情况分别处理,整个Push过程都假设是从A页面跳转到B页面 1.1 从不显示导航栏的页面Push到显示导航栏的页面。 关于导航栏的显示,是否顺滑,是通过如下两个方法来控制。...// 不显示动画,导航栏显示就比较突兀 [self.navigationController setNavigationBarHidden:YES]; // 显示动画,在侧滑时,导航栏显示就比较顺滑...第一种方案比较简单就不做赘述了,第二种方案是这样的: 自定义导航控制器,然后重写如下方法: - (void)pushViewController:(UIViewController *)viewController...- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { UIBarButtonItem

1.7K31
您找到你想要的搜索结果了吗?
是的
没有找到

大前端开发中的路由管理之四:iOS篇

,UITabBarController         其中,容器类ViewController是这篇文章关注的重点,因为他们管理着View的显示逻辑。         ...同时UINavigationController还持有屏幕上方的交互栏(navigationBar)和屏幕下方的工具栏(toolBar),并控制他们是否可见。         ...而点击应用上方的NavigationBar返回按钮(如果没有隐藏起来的话)就会pop当前的ViewController,也就是返回上一层。...:vc1 animated:NO];   //把vc1推到nav的stack中[nav pushViewController:vc2 animated:NO];   //把vc2推到nav的stack中...//这时nav的顶层VC被pop出,top变成vc1         通过解析源码的方法,发现UINavigationController不仅有简单的pushViewController和popViewController

1.9K40

iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

mainController]; // 给窗口指定根视图控制器 _window.rootViewController = nav; // 让当前窗口成为主窗口并显示...第一次显示出来的自控制器; 2,addChildViewController:此方法是UIViewController的方法,可以用来添加子控制器; 3,通过属性viewControllers进行设置...此属性是UINavigationController的,它可以一次添加多个自控制器; 4,最正常的用法: pushViewController,入栈的方式添加自控制器。...:(UIViewController *)viewController animated:(BOOL)animated; 2.4.3 出栈 返回到上一个控制器(将栈顶的控制器移除) -(UIViewController...imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; navigationController 和navigationItem都是通过"控制器"对象调用的 navigationBar

1.2K40

iOS开发UINavigation系列四——导航控制器UINavigationController

*> *)viewControllers animated:(BOOL)animated; //压入新的视图控制器 - (void)pushViewController:(UIViewController... *topViewController;  //返回显示的controller @property(nullable, nonatomic,readonly,strong) UIViewController...上面两个方法的区别在于,topViewController是返回被push出的最后一个controller,但是如果之后又有present进行莫泰跳转,visibleViewController会返回当前显示的...setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated; //导航栏对象,只读属性 @property(nonatomic,readonly) UINavigationBar *navigationBar...nonatomic, readwrite, assign) BOOL hidesBarsWhenKeyboardAppears; //屏幕滑动的时候隐藏导航栏,常用于tableView,上滑隐藏导航栏,下滑显示

1.8K20

UINavigationController

UINavigationController 根据具体情况,通过push方法添加对应个数的子控制器 UINavigationController以栈的形式保存子控制器 使用push方法能将某个控制器压入栈 - (void)pushViewController...:(UIViewController *)viewController animated:(BOOL)animated; //使用pop方法可以移除控制器 //将栈顶的控制器移除 - (UIViewController...rightBarButtonItem; 清空导航条背景图片 // 清空导航条背景图片,系统判断当前是否为Nil,如果为nil,系统还是会自动生成一张背景图片 [self.navigationController.navigationBar...setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar...dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion; Modal原理 //如果一个控制器的View显示在界面上

1.4K60

Swift-MVVM 简单演练(一)

Push 出控制器后,底部 TabBar 隐藏/显示问题 在导航控制器的基类里面重写一下push方法 判断如果不是根控制器,那么push的时候就隐藏BottomBar 注意调用super.pushViewController...要在重写方法之后 HQNavigationController.swift override func pushViewController(_ viewController: UIViewController...里自定义 class HQBaseViewController: UIViewController { /// 自定义导航条 lazy var navigationBar =...(withHex: 0xF6F6F6) 设置左侧 leftBarButtonItem 左侧都是返回(第二级页面以下) 或者是上一级title的名称(只在第二级页面这样显示) 在重写pushViewController...reloadData() } } ---- 未登录视图显示(访客视图) 现实中经常会遇到一些临时增加的需求,比如登录后显示的是一种视图,未登录又显示另外一种视图,如果你的公司是面向公司内部的APP

10.2K51

兼容 - 纯代码完美适配 iPhoneX

没有适配 iPhoneX的触底页面 旧工程如何在iphoneX全屏显示 只需要在LaunchImage中添加一个尺寸为1125 × 2436的启动图,并且工程使用LaunchImage加载启动图的,而不是使用...bounds.size.width/375 #define NEWY NEWX iPhone X 变化最大的是头部 & 底部 非iPhone X : StatusBar 高20px,NavigationBar...高44px,底部TabBar高49px iPhone X: StatusBar 高44px,NavigationBar 高44px,底部TabBar高83px 所以,之前项目里写死的 ±49 ±64...:(UIViewController *)viewController animated:(BOOL)animated { if (self.viewControllers.count...关于状态栏另外两个需要注意的地方: 不要在iPhone X下隐藏状态栏,一个原因是显示内容足够高了,另一个是这样内容会被刘海切割。 ?

4.4K20

Cocoa编程中视图控制器与视图类详解

UIViewController实例负责设置视图的外观和它显示的子视图。 UINavigationController类 1. 导航控制器使用内置动画在视图之间切换; 2....使用pushViewController: animated:可推入一个新的控制器,从而增加新的项到导航栈。(记住:导航栏控制器不添加一个视图进去,这个导航栏是没有意义的!)...UIViewController *aView = [[UIViewController alloc] initWithNibName:(*xib文件名*)];   [aNav pushViewController...导航栏可以通过直接访问navigationBar属性,改变栏的风格或者它的颜色: C代码   self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent...其描述了导航栏上显示的内容,而正好UIViewController另有一导航项属性navigationItem包括左栏按钮(leftBarButtonItem)、右栏按钮(rightBarButtonItem

5K50

iOS右滑返回的实现(interactivePopGestureRecognizer)

- (BOOL)shouldForceEnableInteractivePopGestureRecognizer { UIViewController *viewController = [self...自定义了leftBarButtonItem按钮 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)...viewController.navigationItem.leftBarButtonItems = @[backItem]; } [super pushViewController...2.2 解决方法 所以当你自定义导航栏(自定义了leftBarButtonItem按钮)没采用系统的默认的实现,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你的手势返回,例如是否隐藏了 navigationBar...比如push的时候,自定义了leftBarButtonItem按钮了,你可以采用分类方式往UIViewController 添加forceEnableInteractivePopGestureRecognizer

3K20

UI篇-UITabBar及其相关其他知识

tabBarController属性,通过它可以访问所在的UITabBarController 每个视图控制器都有一个tabBarItem属性,通过它控制视图在UITabBarController的tabBar中的显示信息...alloc] initWithRootViewController:vc2]; self.viewControllers=@[nav1,nav2]; 设置TabBar背景颜色 tabBar和navigationBar...:next animated:YES]; self.hidesBottomBarWhenPushed=NO; //这样back回来的时候,tabBar会恢复正常显示。...只需在第一层页面向第二层页面跳转的地方设置一次即可,第二层向第三层跳转时不需要再次设置,当然,想在第三层页面上显示出 tabbar,设置.hidesBottomBarWhenPushed = NO也是不可能的出效果的...=[[NextViewController alloc]init]; next.hidesBottomBarWhenPushed = YES; [self.navigationController pushViewController

2K20

UI篇-UINavigationController之易忘补充

使用一张图片)但是这张图片设置好以后,所有的控件的Y坐标都会下移64,也就是说,这张图片会占用屏幕的64pt 高度的屏幕,而且无法被普通试图覆盖使用 [self.navigationController.navigationBar...右边的粗的返回箭头还在 SecondViewController *sec = [[SecondViewController alloc]init]; [self.navigationController pushViewController...:sec animated:YES ]; 在push 之后的那个VC中可以设置这返回的颜色: [self.navigationController.navigationBar setTintColor...navigationItem navigationItem是UIViewController的一个属性,包含了当前页面导航栏上需要显示的全部信息,这个属性是为UINavigationController...每个视图控制器都有一个navigationItem属性,navigationItem中设置的做按钮、右按钮、标题等,会随着控制器的显示,也显示navigationBar上 我们来看一下这些名词是什么意思

2.1K20

iOS系统中导航栏的转场解决方案与最佳实践

导航栏的样式变化 对于不同 ViewController 之间的导航栏样式变化,大多可以总结为两种情况: 导航栏的显示与否 导航栏的颜色变化 导航栏的显示与否 对于显示与否的问题,可以在上一节提到的两个方法里调用...的对齐问题,它会影响 UIViewController 的实际大小,例如 edgesForExtendedLayout 的值为 UIRectEdgeAll 时,UIViewController 会占据整个屏幕的大小...不要随意修改 translucent 属性,包括隐式的修改和显示的修改。...不过它也有一些自己独特的地方,为了更好的让大家理解整个过程,我们设计这样一个场景,从页面 A push 到页面 B,结合之前探讨过的方法调用顺序,我们可以知道几个核心方法的调用顺序大致如下: 页面 A 的 pushViewController...检查是否有改动 translucent 属性,包括显示修改和隐式修改,如果有,请做调整。

2.3K30
领券