首页 > 其他分享 >initWithNibName 和 loadNibNamed 的区别

initWithNibName 和 loadNibNamed 的区别

时间:2023-06-22 11:33:14浏览次数:44  
标签:xib loadNibNamed 区别 self initWithNibName 加载 view

UIViewController initWithNibName

这时候是延迟加载

主要代码如下:

ShowViewController * showMessage = [[ShowViewController alloc]
initWithNibName:@"ShowViewController" bundle:nil];
self.showViewController
release];

这时候是延迟加载,这个View上的控件是 nil 的

self.showViewController.show_Topic 

只有到 需要显示时,才会不是 nil

[saveViewController.view removeFromSuperview];
[self.view insertSubview:showViewController.view atIndex:0];

这时候 xib 文件的要求:

initWithNibName 和 loadNibNamed 的区别_加载

NSBundle loadNibNamed

实时加载。

这时候的代码:

NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"Save3ViewController" 
                                                          owner:self options:nil] ;
self.showViewController = [nib lastObject];

这时候的xib文件

initWithNibName 和 loadNibNamed 的区别_加载_02

initWithNibName 和 loadNibNamed 的区别_延迟加载_03

如果用 loadNibNamed 加载 initWithNibName 用到格式的 xib 文件,就会报错误:

setValue:forUndefinedKey
loaded the...nib but the view outlet was not set

loadNibNamed和initWithNibName需要加载的xib文件是不一样的。initWithNibName需要加载的xib文件的File Owner应改是需要加载的类,

而loadNibNamed需要加载的xib文件的File Owner为NSObject。


when using loadNibNamed:owner:options:, the File's Owner should be NSObject, the main view should be your class type, and all outlets should be hooked up to the view, not the File's Owner.

http://stackoverflow.com/questions/46220/iphone-app-crashing-error-question

参考资料:

从xib/nib加载UIViewController/或其子类


iPhone App Crashing - Error Question
http://stackoverflow.com/questions/46220/iphone-app-crashing-error-question

标签:xib,loadNibNamed,区别,self,initWithNibName,加载,view
From: https://blog.51cto.com/u_15588078/6534486

相关文章

  • Objective C中NULL、Nil、nil、NSNull 的区别
    NULLValuesThesemacrosdefinenullvaluesforclassesandinstances.NULL可以用在C语言的各种指针上#define__DARWIN_NULL#define__DARWIN_NULLConstantsc特有的,例子:int*pointerToInt=NULL;char*pointerToChar=NULL;structTreeNode*roo......
  • HTTP中GET与POST的区别
    1.相同点请求头的大部分内容相同,只有部分有所区别,都是用来访问服务器的方法。2.不同点  GET请求 POST请求参数传递方式 传参时将参数放于url后。请求和参数分开,参数作为独自携带的数据进行上传。 能否作为书签 url中有传递参数,可以作为书签保存。因为书......
  • sprintf fprintf用法区别
    1、输出目标不一样printf:输出到标准输出sprintf输出到指定字符串中,参数比printf多了一个char*(目标字符串地址)fprintf输出到指定文件设备中,参数比printf多了一个文件指针file*2、原型1、intfprintf(file*stream,constchar*format,……)fprint......
  • 独享带宽是什么意思?独享带宽和共享带宽的区别
    在和用户洽谈时,我经常会讲到独享带宽和共享带宽的区别,这次飞飞和你们分享,独享带宽是什么意思和独享、共享带宽的区别,希望可以帮助到您~独享带宽是什么意思?独享带宽即用户独自享用机器的带宽资源,按最高峰值收费,比如独享50M的带宽,最高上行峰值可达50M,下载不限速。独享可以保证......
  • 【条漫】一文读懂虚拟化与容器的区别,技术焦虑-1-1-1
    先简单说说虚拟化、容器技术的概念和原理:♦虚拟化技术是通过在物理硬件上创建虚拟的资源层,将一台物理服务器划分为多个虚拟机,每个虚拟机可以独立运行不同的操作系统和应用程序。虚拟化技术的优势在于资源的隔离性和灵活性,可以更好地利用硬件资源,提高服务器的利用率♦容器技术是虚拟......
  • 箭头函数和普通函数有什么区别?
    1、箭头函数更加简洁。2、箭头函数没有自己的this,只会在自己作用域的上一层继承this3、箭头函数继承来的this指向永远不会变,使用call()|apply()|bind()等方法不能改变4、箭头函数不能作为构造函数使用,没有自己的arguments|prototype......
  • var、let、const 的区别
     varletconst变量提升√××重复声明(同作用域)√××赋初值××√变量全局局部局部var声明的变量有变量提升的特性,而let、const没有var声明的变量会挂载到windows对象上,所以使用var声明的是全局变量,而let和const声明的变量是局部变......
  • InputStream和Reader区别
    InputStream,OutputStream  前者为字节输入流,后者为字节输出流。Reader   Writer  前者为字符输入流,后者为字符输出流。四个均为抽象类。fileInputStream 是InputStream 的实现类  fileReader 是Reader 的实现类字节流读取单位为一个字节,字符流读取单位为一个字符......
  • javainteger类-偷偷藏不住的想带大家领悟int 和 Integer 的区别
    其实在Java编程中,int和Integer都是非常常用的数据类型,但它们之间存在一些关键的区别,特别是在面向对象编程中。所以接下来,就让我们一起来探讨下关于int和Integer的区别这个问题吧。1.int和Integer的定义int是Java中的一种基本数据类型,用于表示整数。它是Java语言中最常用的数据类型......
  • 1p+n漏保和2p漏保区别?
    1.外观左:2P,右:1P+N左:宽,右:窄左:空开加漏电附件,右:一体 2.功能1P+N漏保和2P漏保的设计原理相同,都是通过检测电回路中的漏电流来判断电路是否出现漏电等危险情况,并立即切断电路以避免电击或火灾等事故发生。  不同之处在于,1P+N漏保是单极断路器,在电流仅流过一个触点时......