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

当我在视图之间来回切换时,我的viewDidLoad第二次没有被调用?

当在视图之间来回切换时,viewDidLoad方法可能不会被调用的原因有以下几种可能性:

  1. 视图控制器已经被加载过:viewDidLoad方法只会在视图控制器第一次加载视图时被调用,当你来回切换视图时,如果视图控制器已经被加载过,viewDidLoad方法不会再次被调用。这是因为视图控制器的生命周期中,viewDidLoad方法只会在视图第一次加载时被调用。
  2. 视图控制器没有被正确初始化:如果你在切换视图时没有正确初始化新的视图控制器,那么新的视图控制器的viewDidLoad方法也不会被调用。确保你在切换视图时正确地创建和初始化新的视图控制器。
  3. 视图控制器的生命周期方法被重写:如果你在视图控制器中重写了viewDidLoad方法,并且没有调用父类的实现,那么viewDidLoad方法也不会被调用。在重写viewDidLoad方法时,确保你调用了父类的实现,以保证正常的生命周期方法执行。
  4. 视图控制器的视图没有被正确加载:如果你在切换视图时没有正确加载新的视图,那么viewDidLoad方法也不会被调用。确保你在切换视图时正确地加载新的视图。

总结起来,当在视图之间来回切换时,viewDidLoad方法不被调用可能是因为视图控制器已经被加载过、视图控制器没有被正确初始化、视图控制器的生命周期方法被重写或者视图没有被正确加载。在处理这个问题时,需要仔细检查代码,确保正确地初始化和加载视图,并且正确地处理视图控制器的生命周期方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UIViewController生命周期

2、ViewDidLoad loadView方法执行完之后,就会执行viewDidLoad方法。此时整个视图层次(view hierarchy)已经放到内存中。...合创建一些附加view和控件 3、ViewWillAppear 视图加载完成,并即将显示屏幕上,会调用viewWillAppear方法,在这个方法里,可以改变当前屏幕方向或状态栏风格等。...都会被调用,而第二次(viewA已经有了viewB)只调用viewB viewFrame变化会触发layoutSubviews 滚动一个UIScrollView会触发layoutSubviews 旋转...applicationWillResignActive:应用程序将要由活动状态切换到非活动状态时候,要执行委托调用,如 按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。...applicationWillEnterForeground:应用程序将要进入前台(激活),要执行委托调用,刚好与applicationWillResignActive 方法相对应。

1.9K10

UIViewController生命周期及iOS程序执行顺序

视图已经从屏幕上移除,用户看不到这个视图了 3、dealloc视图销毁,此处需要对你init和viewDidLoad中创建对象进行释放 关于viewDidUnload:发生内存警告时候如果本视图不是当前屏幕上正在显示视图的话...因为当这个视图再次显示屏幕上时候,viewLoad、viewDidLoad 再次调用,以便再次构造视图。...当我们创建一个UIViewController类对象,通常系统会生成几个默认方法,这些方法大多与视图调用有关,但是视图调用时,这些方法调用顺序如何,需要整理下。...另外一方面,当APP有多个视图视图切换,并不会再次载入viewDidLoad方法,所以如果在调入视图,需要对数据做更新,就只能在这个方法内实现了。所以这个方法也非常常用。...他们都可以用来视图载入时候,初始化一些内容。 但是他们有什么区别呢? viewDidLoad 此方法只有当view从nib文件初始化时候才调用

1.9K110
  • iOSMVC框架之控制层构建(下)

    iOS6以后控制器中只提供了视图构建以及构建完成模板方法,但却不再提供视图销毁之前或者之后模板方法,因此我们loadView以及viewDidLoad中添加代码就一定要考虑到这么一点,因为他不像其他方法一样提供了互逆处理机制...也就是这里一般用来完成视图和控制器之间关联处理以及控制器和业务模型关联处理。viewDidLoad中最适合做就是实现视图和控制器之间绑定以及控制器和业务模型之间绑定操作。...另外虽然你视图构建是通过懒加载形式来完成,但是如果你比如viewDidLoad中大量访问这些属性一样会产生视图构建操作,这样其实和直接创建视图对象是一样,并没有起到任何优化性能作用...只要拆分合理那么进行协同开发就会最大限度减少冲突发生。随着XCODE版本更新,SB所具有的功能越来越强大,通过SB除了能实现界面布局外包括逻辑跳转以及页面的切换我们都不需要编写一行代码。...因此当我们通过代码方式来完成视图创建以及布局也应该将代码逻辑放到这里而不应该放到viewDidLoad中去。

    4.4K30

    UI篇-VC生命周期以及UIViewlayoutSubviews和drawRect方法

    中了,而一个 VC 执行viewWillAppear 必定是 self.navigationController topViewController即栈顶视图。...一个很常见问题,我们需要在VC销毁时候处理一些事情,可是 viewWillDisappear 不管是入栈新视图还是出栈当前视图都会被调用,无法判断,结合之前说原理,我们可以利用下面这个方法判断当前...但是VC中,当前UIView viewDidLoad 执行后才初始化好,所以我们会见到这样一个Bug,VC初始化语句后面调用 一个 VC绘制UI方法,你会发现根本没有效果,这就是因为,VC...7、直接调用setLayoutSubviews。 drawRect以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。....这样可以控制器中设置一些值给View(如果这些View draw时候需要用到某些变量 值). 2、该方法调用sizeToFit后调用,所以可以先调用sizeToFit计算出size。

    1.9K30

    iOS架构设计:揭秘MVC, MVP, MVVM以及VIPER

    iOS中使用MVC感觉怪怪?对切换到MVVM有疑虑?听说过VIPER,但不知道是否值得? 往下看,你将会找到这些问题答案,如果还有疑问,请在评论区留言。...为什么要采用分布式 当我们想弄清楚某些事情是如何运作,采用分布式能让我们大脑思路清晰。如果你认为你开发越多,你大脑就越能理解复杂性,那么你是对。但这种能力不是线性,很快就会达到上限。...由于视图控制器与视图紧密耦合,因此很难测试——因为在编写视图控制器代码,你必须模拟View生命周期,从而使你业务逻辑尽可能地与View层代码分隔开来。...它和MVP模式看起来很像: MVVM也将ViewController视作View View和Model之间没有耦合 此外,它还有像Supervising版本MVP那样绑定功能,但这个绑定不是View...绑定 MVP部分已经提到这点了,但是在这里我们来继续讨论。 绑定是从OS X开发中衍生出来,但是我们没有iOS开发中使用它们。当然我们有KVO通知,但它们没有绑定方便。

    1.4K20

    iOS对UIViewController生命周期和属性方法解析

    4:viewDidLoad方法是我们最常用方法,类中成员对象和变量初始化我们都会放在这个方法中,类创建后,无论视图展现或消失,这个方法也是只会在将要布局时调用一次。...三、从storyBoard加载UIViewController实例传值陷阱         我们知道,当我们从StoryBoard中加载ViewController,我们Controller中拖拽视图是可以初始化...,这里面有一点需要我们注意,如果我们需要向controller中视图进行传值设置,通过以下方法得到Controller中,视图没有初始化创建出来:  ViewController2 * viewController2...可以看到,手动调用loadView后,label是创建了出来,但是暴漏了一个更严重问题,系统不在调用ViewDidLoad方法,这是十分有风险,因为我们大部分初始化代码都会放在这个方法里,所以手动调用...; 2、模态跳转中Controller从属         我们进行控制器跳转,只要控制器没有释放,我们都可以顺藤摸瓜找到它,使用如下两个方法: //其所presentcontller,比如

    3K20

    Mac开发跬步积累(二):NSViewController 转场动画精耕细作

    图片来自网络 与iOS相比,macOS中,控制器转场情景相对要简洁一些,没有iOS中导航控制器Push和Pop动画以及边缘返回手势, 保留下Present方式,倒是提供了特有的切换方式, 可以供我们使用出许多效果...extension中提供了四个方法用来处理控制器之间关系以及切换转场处理. 1....transition仅在子控制器child ViewController之间进行切换....动画效果 Summary(总结) macOS中,控制器转场切换无论是presentViewController方式或者transition方式,本质上都是将要显示控制器视图View,通过addSubView...自定义present 动画,需要注意事件穿透问题: 由于显示出来控制器视图(Controller View)是通过addSubView方式添加到容器视图中,因此控制器视图(Controller

    2.7K40

    ViewController及View生命周期1. 起因2. Controller生命周期3. View生命周期4. 内存警告

    意思是说viewDidLoad视图加载后调用。如果使用了布局文件,那么会在布局文件加载后调用。...iOS7新增加了导航控制器侧滑手势,当触发侧滑返回,会调用系统viewWillDisappear:方法,取消侧滑返回又会调用viewWillAppear:方法。...执行时候会首先判断有没有指定storyboard或者Xib,如果指定,就会加载它们描述控制器View,如果没有指定,创建一个空View。...调用addSubivew:成功后会给该视图发送didAddSubivew:回调,触发UIView子类新增视图执行其他操作。...willMoveToWindow:视图移动前发出回调。 willRemoveToSubview:回调通知父视图视图即将被删除 4. 内存警告 首先要判断一下,当前view有没有显示。

    1.4K30

    iOS横竖屏切换

    如果没有返回,则present和原来界面保持一致。...2、viewDidLoad调用旋转方法是什么意思? 横屏竖切换机制分析 前面的实例介绍了如何支持切换,但是也产生一些疑问: 工程配置文件也没有设置横屏,为什么后面就能支持横屏?...仅仅知道切换适配代码,是无法形成横竖屏切换理解,也就很难回答上述问题。 由于没有找到解释横竖屏切换机制官方文档,以下根据自己经验对这个切换机制进行分析。...需要注意是,当我们返回UIViewController朝向,还要考虑父容器朝向。...当我们从一个竖屏界面push一个横屏界面,即使横屏界面设置了shouldAutorotate=YES,这个界面也不会变成横屏,但是拿起来设备左右翻转时候,会发现随着设备旋转,界面也从横屏变成了竖屏。

    2.6K20

    App生命周期

    awakeFromNib 当awakeFromNib方法调用时,所有视图outlet和action已经连接,但还没有确定,这个方法可以算作适合视图控制器实例化配合一起使用,因为有些需要根据用户喜好来进行设置内容...假设我们处理内存警告释放view属性:self.view = nil。因此loadView方法视图控制器生命周期内可能调用多次。...另一方面,当APP有多个视图,上下级视图切换是也会调用这个方法,如果在调入视图,需要对数据做更新,就只能在这个方法内实现。...viewDidAppear view添加到视图层级中以及多视图,上下级视图切换调用这个方法,在这里可以对正在显示视图做进一步设置。...viewWillDisappear 视图切换,当前视图在即将被移除、或被覆盖是,会调用该方法,此时还没有调用removeFromSuperview。

    1.3K10

    iOSMVC框架之控制层构建(上)

    也就是说我们实现某个功能通常是为这个功能建立一个对应控制器来实现,控制器负责视图构建和业务模型调用,而思想下框架就是经典MVC框架!...viewDidLoad 这个方法调用时表示视图已经构建完毕了,一般在这里构建模型层业务模型对象,以及一些事件绑定,委托delegate设置等工作。...viewWillAppear 视图将要呈现时调用,只有当将一个视图添加到一个窗口UIWindow视图才会呈现出来,因此这个方法是视图添加到窗口前调用。...viewDidAppear 视图已经呈现到窗口中,这个方法会在视图添加到窗口后调用。 viewWillDisappear 视图将要从窗口中删除调用。...)这样当控制器中视图销毁,根视图里面的子视图也应该被销毁,而如果你用strong来定义子视图就有可能导致子视图生命周期要长于根视图

    1.6K20

    iOS14开发-定位与地图

    这种方式会出现 2 次授权对话框:第一次和前台定位一样,同意使用While Using App模式后,继续使用定位才会弹出第二次,询问是否切换到Always模式。...精度控制 iOS 14 新增了一种定位精度控制,定位授权对话框中有一个精度切换开关,可以切换精确和模糊定位(默认精确)。...默认情况下每当位置改变LocationManager就调用一次代理。...通过设置distanceFilter可以实现当位置改变超出一定范围LocationManager才调用相应代理方法。这样可以达到省电目的。...MKAnnotationView:可以用指定图片作为标注样式,但显示时候没有动画效果,如果没有指定图片会什么都不显示(自定义使用)。

    2.4K30

    添加多个屏幕-创建格线布局

    您可以下载Final Xcode项目,以帮助您与自己进度进行比较。 查看控制器 主故事板中,让我们构建我们集合视图。首先,把视图控制器从对象库旁边我们视图控制器。...然后,viewDidLoad中,调用IBOutlet并将其委托给self。这样,我们ViewController将能够使用我们Collection View。另外,将数据源设置为self。...关闭 Collection View 当我们点击按钮,我们想要关闭Collection View。转到主故事板,启用Assistant Editor,从按钮创建IBAction。...使用segue名称声明一个if语句。这样,您确定在调用此segue,我们将执行操作。将委托设置为self。我们需要使用委托来指定我们正在调用,否则,View Controller不知道。...cell.index = indexPath.row 返回UIImage 当我们点击按钮,它将在函数中返回UIImage类型图像。为ARScreen图像声明一个新数组。

    2.9K40

    iOS页面加载时间测试初探

    UIViewController是画面控制中心类,包含导航条、标签条、工具条等多种功能界面,主要功能是用于控制画面的切换,其中view属性管理整个画面的外观。...页面生命周期 viewDidLoad: 载入完成,可以进行自定义数据以及动态创建其他控件 viewWillAppear: 视图即将出现在屏幕之前 viewDidAppear: 视图已经屏幕上渲染完成...viewWillDisappear: 视图即将从屏幕上移除 viewDidDisappear: 视图已经从屏幕上移除 dealloc: 视图销毁 image 测试方法 view基类打点 一般项目代码都会继承...usingBlock:^(id aspectInfo){ NSLog(@"%@ 对象viewDidLoad调用了",aspectInfo.instance);...对而言有两点思考. 1、专项测试测出来数据结果,其实并不是记录一个数值而已,更需求了解其背后技术特性。

    1.9K30

    iOS 面试策略之经验之谈-架构选择

    新人可以快速上手;修改和增加新功能也没有明显障碍;即使是没有经验开发者也可以很好维护。 缺点主要由视图层 和控制器层高度耦合造成,其负面影响主要为: 代码过于集中。...而在 viewDidLoad 中,我们却发现 userImageView 直接可以调用做为 Model User 去进行配置。...当接收到用户交互,它会调用 Presenter 进行处理。也就是说,View 层不包含任何业务逻辑代码,它只会将交互交给 Presenter,并从 Presenter 那里接受结果来更新自己。...MVC,MVP,MVVM 这三种结构都是以视图为驱动架构,三种皆为用户交互和视图更新为主要服务目标。它们一个共同缺点是没有涉及界面之间跳转——即路由设计。 7....专门负责界面跳转和组件之间切换。当 App 较小时,Router 负责页面跳转。当 App 比较大,不同功能和业务会拆分成不同模块或组件,Router 作用就是不同组件之间进行链接。

    1K30

    PowerBI中书签和导航页,如何选择呢?

    但是最初,书签是当作一些保存视图,可用于讲故事而不是用来导航。然而,当前其实更多报告制作者使用书签进行导航,而不是讲故事。...“讲故事”,那么通过书签来回调用,可以达到很好效果。...不过,要在两个页面中进行来回切换,由于目前有了页导航,我们就需要来分析一下这两种方式不同场景中优缺点了: 1.严格地多个页面之间切换 当我们要做地仅仅从一个页面切换到另一个页面,比如有一个导航栏...尽管此时使用书签非常繁琐,但它还是提供了无缝用户体验。 比如在下图中,当我使用页面导航不同页面之间切换,每次切换都会显示页面的顶部,这显然并不是我们想要: ?...很长一段时间里,喜欢用书签,但是当我发现在做一些数据量比较小项目,页导航做起来的确更加便利。不过,书签给用户的如丝般顺滑体验,是页导航无论如何也不能给

    6.9K31

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

    tabBar,以及购物券类app首页tabBar 3、特色功能:更新数据期间旋转tabbaricon blink https://blink.csdn.net/details/1175811 I、...当进入首页再次点击tabBar可刷新界面数据 1.1 selectedViewController中记录上一次按钮点击,用于数据刷新 新增一个属性 记录上一次点击按钮tag /** 记录上一次点击按钮...,进行数据刷新 - (void)viewDidLoad {     [super viewDidLoad];     self.automaticallyAdjustsScrollViewInsets ...修改UITabBarItemtitle ,达到选中之后和未选中title不一样效果 切换到首页title为刷新,提示用户再次点击tab刷新界面数据 在这里插入图片描述 未选择首页tabtitle...并传递icon所在视图给外围来实现旋转动画 // 遍历tabBar上子控件,给"UITabBarButton"类型按钮绑定动画效果事件 //(注意:遍历添加动画事件时机是layoutSubviews

    2.7K20

    【IOS开发基础系列】UIViewController专题

    结构来还是根据用户视觉来,尚不清楚),直到view下次请求。         ...4 controller调用viewDidLoad方法来执行一些加载(加载一词,相对于编译、运行时)任务。         ...-(void)animateTransition:(id)transitionContext;         进行切换时候将调用该方法,我们对于切换UIView设置和动画都在这个方法中完成。...1.我们设定了一个BOOL变量来表示是否处于切换过程中。这个布尔值将在监测到手势开始设置,我们之后会在调用返回这个InteractiveTransition时候用到。     ...2.计算百分比,我们设定了向下划动400像素或以上为100%,每次手势状态变化时根据当前手势位置计算新百分比,结果限制0~1之间

    57030

    CALayer 实用属性补充

    为方便对CALayer学习,特记录以下内容,整理自ios核心动画高级技巧 · GitBook (墙裂推荐阅读此翻译文档)  contents 属性 这个属性类型定义为id(这是由于MacOSX...一样,目的是为了处理内容图层边界内如何对齐。...当我们使用UIImage,会获取高质量图片,但CGImage没有拉伸概念,因此使用CGImage设置图片时,拉伸因素会在转换时候丢失,当用代码设置contents图片时,要手动设置图层contentsScale...contentsScale maskToBounds 默认情况下,UIView会绘制超过边界内容或子视图,CALayer也一样。...与bounds和frame不同,contentsRect不是使用点来计算,它使用了单位坐标,值0~1之间。默认值是{0,0,1,1},意为整个图片大小。 ?

    93930
    领券