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

UITabbarController 偶现启动crash问题分析

该问题在灰度有出现过,一位同事在排查过程中,发现另外一个类似问题是在UITabBarController的 _viewControllerForTabBarItem:方法出现异常,这个问题量级并不大,场景类似但是没有特别信息帮助定位...时机,合理猜测一个场景:是否tab切换时,导致某个vc不在tabbar的子vc里面。...结合这个猜测,当vc被复用到新的tabbarVC时,加了一段代码让新的tabbarVC不添加到window,从而旧的tabbar继续触发viewWillAppear,问题可以复现。...new]; [anotherTabbarVC addChildViewController:self.tabVC.viewControllers.firstObject]; } 复用逻辑比较简单清晰...only a view controller in the tab bar controller's list of view controllers can be selected 问题解决 方案1:在viewWillAppear

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

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

    而很多App的做法其实比较粗糙,类似于我在传送门:iOS导航栏切换界面时隐藏和显示中的做法,需要导航栏透明时,直接将导航栏隐藏起来。...Tabbar切换友好的效果: [self.navigationController setNavigationBarHidden:NO animated:NO]; 但是这样一来你在UINavigationController...这两个矛盾没有想到可以调和的手段,除非在业务上就不显示Tabbar了,但始终不是长久之计。...现在导航栏的透明就比较完美了: 对于这种将导航栏背景直接设为透明的情况,在 Tabbar 切换界面时,也不会出现导航栏收起的小动画: 为UIViewController添加导航栏透明度属性 为了方便...,我们可以在 UINavigationController 的 Delegate 中添加一个处理,监控松手后时自动完成返回还是取消返回操作,同时使用 UIView 动画(关于 UIView 动画可以看我的这篇文章

    3.1K40

    Swift开发:自定义标签栏UITabBarController (Swift项目开始的第一步)

    在Swift的学习过程中,个人感觉虽说两种语言的相似度很大,但是Swift依然在代码风格上有着和OC很大的差异。...中的Main,因为我们要使用纯代码的方式来创建标签栏控制器,系统自带Main.StoryBoard的xib形式的界面我们并不需要。...第二步:准备资源文件 1.在Assets.xcassets中存放标签栏按钮所需要的图片资源 ?...屏幕快照 2017-07-15 下午1.52.29.png 2.创建标签配置Plist文件,并且在Plist文件中设置视图控制器的类名、Title、标签栏图片等信息 ?...屏幕快照 2017-07-15 下午1.46.26.png 这里做下说明,之所以创建这个plist文件是因为在之后创建视图控制器和标签按钮时会有很大的便利性,而且也十分方便真实开发过程中的需求更改。

    4.4K70

    小程序中tabBar的使用

    今天说说tabBar的使用,先看看官方说法:如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面...备注: 当设置 position 为 top 时,将不会显示 icon tabBar 中的 list 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。...因为自己实现的tabBar,没有官方的常驻底部的效果好,官方的组件也有限制:不能完全满足自定义需求。比如不支持iconfont图标,也不能展示其他样式风格。...selectedColor: tab 上的文字选中时的颜色 backgroundColor:tab 的背景色 borderStyle:tabbar上边框的颜色, 仅支持 black/white position...:可选值 bottom、top 注:color颜色请一定写成十六进制颜色,不要用RGB颜色,IOS设备上不识别RGB颜色~ 可能会踏的坑: 其他页面,如果需要跳转至带tabBar的页面,必须使用wx.swichTab

    2.8K80

    UI篇-VC的生命周期以及UIView的layoutSubviews和drawRect方法

    viewWillAppear 之后 viewDidAppear 之前执行,这个方法会被调用多次,如果在此创建视图,可能会创建多个,而且这个方法中执行耗时操作依然会造成跳转卡顿的问题。...一个VC 在执行viewWillDisappear 或者viewDidDisappear 方法时都是出栈之后才执行的,也就是说 已经不在 self.navigationController 的viewControllers...但是在VC中,当前UIView的是在 viewDidLoad 执行后才初始化好的,所以我们会见到这样一个Bug,在VC初始化语句后面调用 一个 VC的绘制UI的方法,你会发现根本没有效果,这就是因为,VC...drawRect 掉用是在Controller->loadView, Controller->viewDidLoad 两方法之后掉用的.所以不用担心在 控制器中,这些View的drawRect就开始画了...强行调用也不会起作用的。** 2、**若使用calayer绘图,只能在drawInContext: 中(类似鱼drawRect)绘制**,或者在delegate中的相应方法绘制。

    1.9K30

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

    ;   提示:UIViewController 有一个属性是navigationController,如果当前ViewController在某个NavigationController的堆栈中 的话(即是被推送过来的...一、创建UITabBarController 常见的在应用程序委托类的applicationDidFinishLaunching:方法中创建,这通常可为应用窗口提供根视图。...Array对象中,再将此数组分配给Tab Bar Controller的viewControllers属性 NSArray *controllers = [NSArray arrayWithObjects...在实现UITabBarControllerDelegate委托的视图控制器中重写init方法来自定义UITabBarItem条目。...控制器加载视图过程 当调用视图控制器的view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好的编程惯例。

    5.1K50

    关于iOS Tabbar的一些设置

    其实iOS Tabbar的可定制性非常高,我们没有必要重复造轮子,下面是笔者收集的一些tabbar的常用设置,希望对大家有所帮助。...ios8中如下设置: self.tabBar.tintColor=[UIColor greenColor]; 消除tabbar边框 在appdelegate的程序启动处: [[UITabBar appearance...item原始图标与原始选中图标,而不是系统自动填充的颜色 // 拿到 TabBar 在拿到想应的item UITabBar *tabBar = _tabBarController.tabBar...tabBar的subViews, 找到tabBar中的这个view, 是一个UITabBarSelectionIndicatorView的view,然后把它替换成你自己创建的UIImageView, 上例中的...然后需要把UITabBarController的delegate设为self, 在tabBarController:didSelectViewController的代理方法中执行上面的方法:[self

    1.3K40

    iOS中tabBar按钮再次点击实现界面刷新(包含完整demo)【特色功能:在更新数据期间旋转tabbar的icon】

    vedu.csdnimg.cn/93c3fb181b9c4df4af465e5fe10054f9/snapshots/4b797720423844aa94eb938dc07c6de3-00001.jpg)(title-iOS中tabBar...tabBar,以及购物券类app的首页tabBar 3、特色功能:在更新数据期间旋转tabbar的icon blink https://blink.csdn.net/details/1175811 I、...当进入首页时再次点击tabBar可刷新界面数据 1.1 在selectedViewController中记录上一次按钮的点击,用于数据刷新 新增一个属性 记录上一次被点击按钮的tag /** 记录上一次被点击按钮的...并传递icon所在视图给外围来实现旋转动画 // 遍历tabBar上的子控件,给"UITabBarButton"类型的按钮绑定动画效果事件 //(注意:遍历添加动画事件的时机是在layoutSubviews...tabbar的icon /**  是否更换tabbar的图片  */ @property (nonatomic, assign) BOOL isreloadData; 旋转tabbar的图片

    2.8K20

    iOS项目——自定义UITabBar与布局

    【发布】按钮,所以使用单例模式更合理,本文采用懒加载的方式进行单例模式的创建 在  中添加【发布】按钮 [self.tabBar addSubview:self.publishButton]; 。...至于为什么要在 viewWillAppear: 中添加【发布】按钮而不是在 viewDidLoad 中添加?...所以,如果添加【发布】按钮在viewDidLoad中会造成【发布】按钮在TabBar中是第一个添加的,这样会导致【发布】按钮会被TabBarItem覆盖了,这样我们就达到我们的目的。...viewWillAppear:方法中添加发布按钮?...TabBar的.m文件的主要内容,主要是重写其 layoutSubviews 方法,在该方法中我们是将四个按钮的大小和布局进行了调整,然后在最中间添加一个【发布】按钮。

    3.1K90

    iOS导航栏切换界面时隐藏和显示

    : 实现: 要实现这个简单的有无导航栏过渡其实很简单,直接在 viewWillAppear 和 viewWillDisappear 方法中对导航栏进行显示和隐藏就可以了,为了到达比较平滑的效果,建议对是否动画的参数选择...代码如下: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController...Tabbar切换模块时就会出现一个很快的隐藏导航栏的动画,这个很烦,我尝试了很多方法,试图在 UINavigationControllerDelegate 和 UITabBarControllerDelegate...的代理中去做隐藏,并且分别是有动画和没动画,但是因为 Tabbar所包含的其实是 UINavigationController ,所以在点击 Tabbar 切换界面时两个代理方法都会被调用,无解啊。...结 上面的方法可以在只有导航栏控制器时比较好的操作,虽然不能做到像QQ那么好,但也能用,但如果有Tabbar存在,就会有问题。那如何做到QQ那样的效果呢?

    3.9K30

    # iOS导航栏控制Tips

    setNavigationBarHidden:NO animated:YES]; } B页面: // 在页面将要出现时,记录原始侧滑手势代理对象,并将手势代理设置为当前页面 - (void)viewWillAppear...2.重写导航控制器的Push方法,在push之前,设置navigationItem.backBarButtonItem。...iOS端如果要仿这个效果的话,可以利用导航控制器的API: - (void)setViewControllers:(NSArray *)viewControllers...在原始堆栈数组中判断是否存在该类型的控制器,如果存在记录其索引。 在复制的数组中将索引及上方所有控制器移除。 把将要push出来的控制器添加到复制的数组中。...,比如我们期望将要push出来的控制器再某个栈中控制器的后面或者前面,这样当点击返回或者侧滑时,就直接回到了指定页面了。

    1.7K31

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

    ; 例子: //将上面的这5个控制器添加到控制器数组中 self.viewControllers = @[navHall, navArena, navDiscovery, navHistory, navMyLottery...(iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...; (2)push的时候隐藏底部栏,如push后隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; (3)获取管理它的导航控制器 @...UIViewController *)viewController animated:(BOOL)animated; 这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)...继承该父类的控制器调用此方法都可以隐藏push来的控制器底部的TabBar - (void)pushViewController:(UIViewController *)viewController animated

    2.2K60
    领券