首页
学习
活动
专区
工具
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的 view的Frame变化会触发layoutSubviews 滚动一个UIScrollView会触发layoutSubviews 旋转...applicationWillResignActive:在应用程序将要由活动状态切换到非活动状态时候,要执行的委托调用,如 按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。...applicationWillEnterForeground:在应用程序将要进入前台时(被激活),要执行的委托调用,刚好与applicationWillResignActive 方法相对应。

2K10

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

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

1.9K110
  • iOS的MVC框架之控制层的构建(下)

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

    4.4K30

    UI篇-VC的生命周期以及UIView的layoutSubviews和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的从属         在我们进行控制器的跳转时,只要控制器没有被释放,我们都可以顺藤摸瓜的找到它,使用如下两个方法: //其所present的contller,比如

    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.8K40

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

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

    1.5K30

    iOS横竖屏切换

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

    2.7K20

    App的生命周期

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

    1.3K10

    iOS的MVC框架之控制层的构建(上)

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

    1.6K20

    iOS14开发-定位与地图

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

    2.5K30

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

    您可以下载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 面试策略之经验之谈-架构的选择

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

    1K30

    iOS页面加载时间测试初探

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

    1.9K30

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

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

    7K31

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

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

    2.8K20

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

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

    72430

    iOS动画-CALayer基础知识

    视图的的职责就是创建并管理这个图层,以确保子视图在层级关系中添加或者被移除的时候,它们的关联图层也同样对应在层级关系树当中有相同的操作。...-drawRect:方法是UIView没有默认实现的方法,因为寄宿图并不是必须的;但如果UIView检测到此方法被实现了,此方法会被自动调用,然后我们就可以在其中使用Core Graphics绘制自己需要的内容了...:在不实现方法1时,CALayer就会转而尝试调用此的方法; - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx; 在调用方法2...主动绘制 我们需要显式的调用-display方法;这不同于UIView,当图层显示到屏幕上时,CALayer不会自动重绘它的内容,CALayer把重绘的决定权交给了开发者; 2.绘制特点 尽管没有使用...的绘制逻辑; 使用总结:当我们需要自定义寄宿图时,其实不必实现displayLayer:和-drawLayer: inContext:方法来绘制寄宿图。

    1.9K50
    领券