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

View Controller两次调用awakeFromNib

是指在iOS开发中,当一个View Controller的视图从nib文件中加载时,awakeFromNib方法会被调用。awakeFromNib方法是在视图加载完成后,还未显示在屏幕上之前调用的。

awakeFromNib方法是UIView的一个方法,它会在视图从nib文件中加载完成后被调用。在View Controller中,当视图从nib文件中加载时,会自动调用awakeFromNib方法。

awakeFromNib方法的作用是在视图加载完成后进行一些初始化操作,例如设置视图的初始状态、绑定数据等。在这个方法中,可以对视图进行一些额外的配置,以确保视图在加载完成后能够正确地显示和响应用户的操作。

View Controller两次调用awakeFromNib可能是由于以下原因之一:

  1. 多次加载视图:如果View Controller的视图被多次加载,每次加载都会触发awakeFromNib方法的调用。这可能是由于代码中重复加载视图的逻辑导致的。
  2. 视图重用:在某些情况下,View Controller的视图可能会被重用,例如在使用容器视图控制器或者导航控制器时。当视图被重用时,awakeFromNib方法会再次被调用。

为了避免View Controller两次调用awakeFromNib的问题,可以采取以下措施:

  1. 检查代码逻辑:确保在代码中只加载视图一次,避免重复加载的情况发生。
  2. 使用懒加载:可以使用懒加载的方式加载视图,确保只在需要时才加载视图。
  3. 重写awakeFromNib方法:如果需要在awakeFromNib方法中进行一些初始化操作,可以在重写该方法时添加逻辑判断,避免重复执行初始化操作。

总结起来,View Controller两次调用awakeFromNib可能是由于多次加载视图或者视图重用导致的。为了解决这个问题,需要检查代码逻辑,使用懒加载或者重写awakeFromNib方法进行逻辑判断。

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

相关·内容

  • awakeFromNib小总结

    看样例: 创建一个viewController with XIB 定义一个UIView的子类 打开xib,并把View的类型指定为上一步骤定义的子类 然后在TestView.m中增加 awakeFromNib...结果如图: 第一句:通过Xcode实例化controller,但controller的类在IB中创建时调用此方法 {我看有这么说的 awakeFromNib是一个仅仅有在GUI对象被成功载入才调用的方法...当程序对Nib文件进行反序列化然后初始化时,会调用一次awakeFromNib。 可是假设你使用initWithNibName调入Nib时,awakeFromNib是不会被调用的。...} 第二句:initWithcoder是系统自己主动调用的,以后说!!! 第三句和第四句:这两局setNeedsDisplay会异步的调用drawRect来更新view的内容。...第五句:首先结束后,view之后,呼叫处理好viewDidLoad该,所以无论从代码或从IB载入中view应该调用viewDidLoad的。

    43810

    iOS-关于加载xib

    , 看一下后面有没有做关联,如果没有就拉到下面的View和视图做个关联 点击"File‘s Owner",设置Class为xxxViewControler Files‘s Owner与View做关联 第一种加载方式...bundle:nil]; 第一步:寻找有没有和控制器类名同名的xib,如果有就去加载(XXViewController.xib) 控制器类名同名的xib 第二步:寻找有没有和控制器类名同名但是不带Controller...的xib,如果有就去加载(XXView.xib) 和控制器类名同名但是不带Controller的xib 第三步:如果没有找到合适的xib,就会创建一个View(白色View,为系统自己创建的) xib...,如果要通过代码修改xib的内容,一般建议放在awakeFromNib方法内 控件封装 一般封装一个控件,为了让开发者方便使用,通常会在自定义的控件中编写俩个方法初始化方法,这样不管是通过init还是加载...{ [super awakeFromNib]; [self setup]; } - (void)setup{ [self setBackgroundColor:[UIColor

    23410

    App的生命周期

    awakeFromNibawakeFromNib方法被调用时,所有视图的outlet和action已经连接,但还没有被确定,这个方法可以算作适合视图控制器的实例化配合一起使用的,因为有些需要根据用户喜好来进行设置的内容...loadView方法在UIViewController对象的view被访问且为空的时候调用。这是它与awakeFromNib方法的一个区别。...假设我们在处理内存警告时释放view属性:self.view = nil。因此loadView方法在视图控制器的生命周期内可能被调用多次。...loadView方法不应该直接被调用,而是由系统调用,它会加载或创建一个view并把它赋值给UIViewController的view属性。...{ [super awakeFromNib]; NSLog(@"%s",__func__); } // 如果在initWithFrame中添加子视图会调用两次 - (void)layoutSubviews

    1.3K10

    iOS_指定初始化方法Designated Initializer和非指定初始化方法Secondary Initializer

    : 必须调用父类的DI, 对于父类亦然,直到根类 (不可调用自己其他的DI) 如果父类没有实现相应的方法,则需要根据实际情况来决定是给父类补充一个新的方法还是调用父类其他数据源的DI。...(OS 和 iOS 的UI框架中广泛运用此机制,将对象序列化,并保存至XML格式的NIB文件中(NIB文件通常用来存放 视图控制器view controller 及 其视图布局)) 非指定初始方法 Convenience...super发送消息调用父类的DI连接继承链,SI通过向self发送消息调用自己类的DI。...awakeFromNib 方法,我们需要把额外初始化动作写在这里 } - (void)awakeFromNib { [super awakeFromNib]; [self someInit];...awakeFromNib 方法,我们需要把额外初始化动作写在这里 UIView的DI是initWithFrame: UIViewController的DI是init和 initWithNibName:

    55030

    AngularJS in Action读书笔记2——viewcontroller的那些事儿

    今天我们来818《angularjs in action》的第三章controllerview。...Viewcontroller是独立开来的,他们之间的纽带就是图中间的胶水——scope。Controller负责向scope中提供属性和方法,便于和view层面的html进行交互。...(这是个long story,这里先不说,让我们继续controllerview之间的那些事儿~~~)   言归正传,View到底是什么?...其中storyboard.updateCancel通过调用resetForm是的form恢复初始状态,updateStory通过遍历每个属性并写入到storyboard.currentStory对象中,...angularjs中的controller用于定义属性和方法存放在scope上,并且可以和view交互; 了解scope是一个POJO,是viewcontroller之间的胶水; 当属性在scope中声明

    1.4K100

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

    label换行 另外如果xib不是我们创建controller同时创建的,需要做两步操作与之前创建好的controller创建关联。 第一步: ?...第一步与controller创建关联 第二步: ? 与view创建关联 如果xib是在创建controller的同时就创建好了的,系统会自动帮我们做这两件事。 二....-(void)awakeFromNib { [super awakeFromNib]; // 可以在这里对button进行一些统一的设置 文字居中 self.titleLabel.textAlignment...登录注册拼接 如果想点击button实现动画,我们需要修改view左边线与左边屏幕的约束,获得约束属性,将View左边线与屏幕左边的距离从0修改为负一个屏幕宽度,当然也需要添加登陆View右边线和注册View...之前提到,为了避免重复多次的给textfield设置光标颜色和占位文字颜色,我们使用自定义textfield,在awakeFromNib中统一设置即可。

    2.1K50
    领券