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

UINavigationController的setViewControllers方法

在iOS开发中,UINavigationController是很常用的Controller,对它的一般操作就像操作一个栈,push和pop。...但也经常会遇到pop和push无法优雅的完成的操作,比如退回到中间的某个VC上,或者在第一个VC之前添加一个VC等,更甚者要重新构造整个VC的顺序,这时候setViewControllers方法就排上用场了...,它使对VC栈的操作不再局限于push和pop,而是构造整个VC栈并应用到当前的UINavigationController中,这个方法支持iOS3.0+,放心使用。...viewControllers removeLastObject]; [viewControllers addObject:newController]; [self.navigationController setViewControllers...:viewControllers animated:YES]; // [viewControllers relase] // if non-arc 感谢 Allen(Weibo) 提供的代码和思路

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

    ios中UINavigation和UITabBar的结合

    基本现在常见的应用里单一使用Navigation导航栏或者单独使用TabBar的情况已经不多见了,除非是特别专一的应用方式,否则常常会见到两种布局方式结合起来,自己在做第一个项目的时候也是遇到了这个需求...其实想法很简单,是一个多层包装的模式,也就是先分别把自己有导航需求的界面创建出来之后,分别用UINavigationController把这几个界面控制器包装起来,然后初始化一个一个TabBar包含几个...*NavViewOne = [[UINavigationController alloc]initWithRootViewController:one]; UINavigationController...*tabBar = [[UITabBarController alloc]init]; //把两个导航栏控制器添加到TabBar控制器中去 [tabBar setViewControllers...此外,导航栏的标题可以在各个页面中自行设置,比如在viewDidload方法中,如下: self.title = @"标题" 要设置各个界面的tab样式,可以在initWithNibName方法中加入如下代码

    47510

    iOS项目——基本框架搭建

    ,可以是一般的ViewController,也可以是UINavigationController barItem对应的ViewController或UINavigationController的frame...,如上图所示的4个 当添加的barItem个数 > 5个时,会只显示前四个添加的barItem,然后加上一个【more】,点击【more】弹出一个列表可选,并且列表的右上角有一个【edit】按钮,点击之后可以调整...在我们前面添tabBar item的代码中就存在大量重复性的代码,所以我们需要对其进行重构,将重复性的代码进行抽取,将不同的内容设置成参数进行自定义设置,重构后的逻辑如下: @implementation...开发过程中,系统自带的空间有时候会将有些图片显示出来时自动渲染成蓝色,例如自带的TabBarItem在选中时的图片,还有设置UIButtonTypeSystem样式时按钮的图片,这时候系统都会自动渲染成蓝色...,无法跳到对应定义的位置,这时候可能就是配置在Build Setting中,例如我们经常见到的宏 DEBUG 就配置在配置在Build Setting中。 ?

    1.8K80

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

    iOS开发UINavigation系列四——导航控制器UINavigationController 一、引言         在前面的博客中,我么你介绍了UINavigationBar,UINavigationItem...和UIToolBar,UINavigationController是将这些控件和UIViewController紧密的结合了起来,使用导航,我们的应用程序层次会更加分明,对controller的管理也更加方便...:(UIViewController *)rootViewController; 通过以下方法对视图控制器进行管理操作: //设置管理的视图控制器 - (void)setViewControllers:...//iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable, nonatomic, readonly) UIGestureRecognizer... *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)showViewController

    1.8K20

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

    只是其中管理的对象是controller,通过push与pop进行controller的切换,UINavigationController是将这些控件(UINavigationBar,UINavigationItem...BOOL toolbarHidden; 7、获取底部工具条 @property(null_resettable,nonatomic,readonly) UIToolbar *toolbar; 8、获取导航中的返回手势对象...(iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...:(UIViewController *)rootViewController; 2、设置管理的视图控制器 - (void)setViewControllers:(NSArray<UIViewController...UIViewController *)viewController animated:(BOOL)animated; 这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)

    2.2K60

    iOS 前台重启应用和清除角标的问题已知条件:问题描述:调试分析解决问题

    前台时重启应用调用了applicationWillEnterForeground: 已知条件:    应用在退到后台时,会给应用加上一层毛玻璃效果,防止iOS系统自动对应用当前界面进行截屏处理时获取到用户的某些隐私...,不但能保留以前的通知内容,还有角标消失动画,iOS10之前这样设置是没有作用的 ,iOS10之后才有效果 。...[UIApplication sharedApplication].applicationIconBadgeNumber = -1; //这个发送本地通知的操作是为了解决在iOS10之前清除角标的同时可以保留通知内容的问题...iOS10之前清除角标的同时可以保留通知内容的问题 //这个清除角标的操作只在进入后台时执行才会造成:应用在前台时被强制关闭后,立马重启应用后会调用方法applicationWillEnterForeground...问题解决后 虽然问题解决了,但是为什么 调试分析 步骤中的问题代码会导致在前台时重启应用会执行 applicationWillEnterForeground:? 是系统的Bug ?

    1.8K30

    iOS中 超简单抽屉效果(MMDrawerController)的实现

    ios开发中,展示类应用通常要用到抽屉效果,由于项目需要,本人找到一个demo,缩减掉一些不常用的功能,整理出一个较短的实例。...如果需要用按钮控制拉出和收回抽屉,需要加上下面的部分。...1.在中心视图 控制器中添加头文件 #import "UIViewController+MMDrawerController.h"//第三方封装的头文件 #import "MMDrawerBarButtonItem.h..."//第三方封装的头文件 #import "LeftDrawerTableViewController.h"、、左视图头文件 2.在viewDidLoad中实现添加左抽屉控制按钮的方法 [self...setupLeftMenuButton];//在viewDidLoad中实现添加左抽屉 控制按钮的方法 3.在下面实现添加按钮的方法 -(void)setupLeftMenuButton {

    1.5K20

    iOS开发中标签控制器的使用——UITabBarController

    iOS开发中标签控制器的使用——UITabBarController 一、引言         与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是...,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航,导航中在对ViewController...通过点击下面的标签按钮,可以很方便的切换控制器。如果我们的控制器数超过4个,系统会被我们创建一个more的导航,并且可以通过系统自带的编辑来调整控制器的顺序,如下: ? ?... UIViewController *> *viewControllers; - (void)setViewControllers:(NSArrayUINavigationController *moreNavigationController;  //这个属性设置的是可以进行自定义排列顺序的视图控制器

    1.8K20

    抓住iOS的未来 - 30天学习编写30个Swift小程序

    无意中听说了有一个叫Sam Lu在Twitter上发起了一个100天做40个Swift小程序的活动,再加上国内看到了Allen_朝辉写的Swift学习的文章,心里暗自下了一个决定:30天写30个Swift...这次的动画参考了BubbleTransition的动画效果,在它之上加了修改,支持传入自定义的UI属性,方便做组合型动画(例如本例中按钮不仅放大而且上下移动) 动画变化的原理是将相应的ViewController...解决方法:iOS10之后的权限问题,在info.plist里添加相应的权限以及描述即可。...,CoreData在iOS10的变化很大,之前的版本可能和上述操作方法有出入 - [参考文章](http://www.cnblogs.com/Free-Thinker/p/5944551.html)...imageMogr2/auto-orient/strip%7CimageView2/2/w/600) - watch中的UI只可以通过Storyboard来进布局,布局文件在WatchKit App中的

    2.5K20

    六天完成一个简单iOS App - 第一天

    所以框架的搭建就使用代码了。 启动图片的设置在LaunchScreen.storyboard中,当然也可以在Assets.xcassets中直接拖入启动图片,但是需要在General中设置 ?...框架基本结构 UITabBarController 中添加五个UINavigationController,UINavigationController的子控制器来显示内容,管理自己的NavigationBar...UITabBar 中间添加按钮的实现 我们知道中间加号按钮是没有标题的,即使我们将标题设置为空,还有有标题的label站位,所以UITabBarItem是不能实现了,那么我们只能将一个button覆盖在中间这块区域上...实现UINavigationController 返回按钮统一设置 方法一:创建基类,其他继承基类,自动有这个按钮类型 创建一个UINavigationController基类,设置好统一的返回按钮,...因为在分类的方法实现中不可以直接访问本类的私有属性,但是可以调用本类的set,get方法。 4.

    1.1K50

    iOS 组件化-路由解耦思想 JLRoutes 实战篇(一)App内控制器跳转

    (image-d9aae4-1612352196155)] 来解决 App 内外所有页面之间的跳转逻辑, 经过这几年的学习和使用, 将其记录一边巩固知识, 写出来跟大家一起学习, 加上看到网上分享关于使用组件化...-Router 相关文章偏于理论, 很少有完整详细Demo, 具体在项目中使用还需进一步深入研究, 所以有了此篇文章, 有什么不对或需要补充的, 望大家多多指教。...为什么要用路由来实现 VC 跳转 Router 能做的事情很多, 首先我们用它来解决棘手的控制器耦合关系,是一种非常有效的解决方案; 在 App 中控制器跳转普遍分为 3 种, 模态跳转Modal(..., 切换等等; 下面引用常见场景来举个栗子: Router 前 伪代码: 假如在没有引入 Router 之前, 实现 A Push B, B Modal C 的场景: 一般做法都是在 A 中引入B,..., 为了防止在开发时, 传入的字典 Key 与 VC 属性不匹配导致一些 Bug, 添加一层 NSAssert,这样能在开发过程中更快找到问题!

    1.6K20

    IOS越狱学习总结

    除了iOS10之外,iOS9.3.3也在继续测试中, 不过在iOS10光环和iOS9.3.3越狱缺乏实质进展的双重影响下,这一版本看起来更像是在做最后的“挣扎 ”。...iOS10 beta2新功能:不按Home键也能解锁 iOS10越狱门洞大开 iOS9.3.3继续做最后挣扎 在iOS10中,苹果将此前的滑动解锁改为了按压解锁,在iOS10开发者预览版Beta1...中,用户在使用Touch ID解锁iPhone后仍旧需要按下Home键才能解锁iPhone,而在Beta2版本中,这一问题有了解决方案:只需 通过进入设置-通用-辅助功能-主屏幕按钮中选择“松开手指...编辑点评 苹果为何要改掉滑动解锁的方式呢?因为在iOS10中的锁屏界面,由左向右滑动的手势被赋予了新的功能 ——显示插件,为了避免冲突,苹果选用了这一替代方法。...点击盘古越狱工具【开始越狱】按钮   4. 请仔细阅读【越狱须知】后,点击【我已经备份】进入下一步   5.

    1.9K30

    iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究

    导航栏左上角的back按钮是附着在UINavigationController的UINavigationBar里自带的一个返回按钮,导航栏自带的back按钮的图层结构如下图所示。...一 侧滑返回      侧滑返回是系统iOS7自带的一种方便用户进行返回操作而推出的一种新功能。在开发过程中,对侧滑返回进行控制非常简单,主要就是启动侧滑手势和禁用侧滑手势。...self.navigationController.interactivePopGestureRecognizer.enabled = NO; //禁用侧滑手势  1.2 侧滑使用注意 侧滑手势在使用中需要注意的一点就是在项目开发中... 中添加按钮,然后添加按钮的点击功能即可。...,如果你上一级设置的backBarButtonItem的标题过长(没有设置则默认是上一级标题),那么系统可能会自动用“Back/返回”来代替返回按钮中的标题。

    6.9K60

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

    推入时,新的视图控制器从右方滑入屏幕(假定animated:YES)。向左指的Back后退按钮出现,可返回到上一步,且Back按钮用的是上一个视图控制器的标题。 2....;   提示:UIViewController 有一个属性是navigationController,如果当前ViewController在某个NavigationController的堆栈中 的话(即是被推送过来的...一、创建UITabBarController 常见的在应用程序委托类的applicationDidFinishLaunching:方法中创建,这通常可为应用窗口提供根视图。...在实现UITabBarControllerDelegate委托的视图控制器中重写init方法来自定义UITabBarItem条目。...控制器加载视图过程 当调用视图控制器的view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好的编程惯例。

    5.1K50

    iOS透明导航栏的平滑过渡(进阶版)引实现过程结

    而很多App的做法其实比较粗糙,类似于我在传送门:iOS导航栏切换界面时隐藏和显示中的做法,需要导航栏透明时,直接将导航栏隐藏起来。...,标题、返回按钮啥的都方便加,这也就是说不隐藏导航栏,而是要单独让导航栏背景透明; 2、在导航栏透明与否的界面间切换时透明度有渐变效果; 3、在UINavigationController体系和UITabarController...这样每个 ViewController 都可以管理自己的导航栏透明度,在这个新增属性的setter方法中,我们调用前面在在 UINavigationController 的Category 中添加的设置导航栏透明度的方法...swizzledSelector); method_exchangeImplementations(originalMethod, swizzledMethod); } } 这一步我们在...,我们可以在 UINavigationController 的 Delegate 中添加一个处理,监控松手后时自动完成返回还是取消返回操作,同时使用 UIView 动画(关于 UIView 动画可以看我的这篇文章

    3.1K40

    Swift如何给应用添加3D Touch菜单

    OneSwift – iOS Tips Based On Swift 今天为大家带来的是给应用添加3D Touch菜单,这样可以方便用户在首页即可快速访问某些页面。...一、创建自定义的3D Touch菜单 在AppDelegate的didFinishLaunchingWithOptions中,我们添加下列代码,来实现按钮的添加。...firstItemIcon3, userInfo: nil) application.shortcutItems = [firstItem,firstItem1,firstItem2,firstItem3] 复制代码 其中按钮的...3DTouch Xcode原生图标icon图样预览 二、为每个按钮添加响应事件 接着我们为每个按钮添加响应事件,因为我的四个按钮刚好都到一个固定页面,所以响应事件实现页面的跳转即可。...绑定按钮的事件函数: func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem

    99220

    iOS:分割控制器UISplitViewcontroller

    分割控制器UISplitViewController 功能:它也是ipad的一个新特性,在屏幕上可以同时显示两个控制器,左边一个,右边一个;左边的为主控制器,右边的为详细控制器,主控制器可以根据需要显示或隐藏...它对于iPhone虽然可以使用,但是不具备同时显示的特点,在iPhone的样式,就是导航控制器切换的模式。...2、导入几张素材图片,用来在详细控制器中显示。...所有的文件截图为: 3、下面就是具体的代码创建了: //在AppDelegate.m文件中: 导入头文件并声明必要的属性,同时实现分割控制器的协议 #import "AppDelegate.h" #import...文件中: 导入头文件并声明必要的属性,同时实现分割控制器的协议 #import "MasterViewController.h" #import "DetailViewController.h" @interface

    2K30
    领券