xcode xib 加载 、注意点

加载xib2中方式

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"xib名称" owner:nil options:nil];

UINib *nib = [UINib nibWithNibName:@"xib名称" bundle:nil]; // nil 默认是mainBundle

NSArray *array = [nib instantiteWithOwer:nil object:nil];

xib的使用注意点

如果是通过代码创建的控件,初始化时一定会调用initWithFrame

如果是通过xib或者storyboard创建控件,初始化时是不会调用initWithFrame,会调用initWithCoder

如果是通过xib或者storyboard创建控件,初始化完毕后会调用awakeFromNib方法

建议在awakeFromNib中做初始化

layoutSubviews设置子控件的frame 这个也能做初始化

在layoutSubviews方法中设置子控件的frame(layoutSubviews一定要调用[super layoutSubviews] )

时间: 2024-10-11 10:43:05

xcode xib 加载 、注意点的相关文章

xib加载局部UIView

xib文件是轻量级的,一般用来描述某一块局部的UI界面,而storyboard是用来描述软件的许多界面,并且能展示多个页面之间的跳转关系 1.xib文件的加载方式 方法1. NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"MJAppView" owner:nil options:nil]; 这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中 (如果xib如右图所示,那么objs数组中依次会有3个对象:1个UI

UINib xib加载

1.加载RowView.xib文件,创建Objects下面的所有控件: NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"RowView" owner:nil options:nil]; 2.取出xib中的第一个子控件: UIView *rowView = views[0]; 3.tableview中cell NSString *identify = @"goodslistcell"; cell = [ta

Bug:(使用xib加载控制器view时遇到的bug) loaded some nib but the view outlet was not set

当使用 initWithNibName 函数, 并使用 由nib文件生成的ViewController 的view属性时候,遇到这个问题. UIViewController * UIVC = [[UIViewController alloc] initWithNibName:@"loc" bundle:nil]; [self.view addSubview:UIVC.view]; NibName[2203:207] *** Terminating app due to uncaught

IOS第八天(1:UITableViewController团购,点击底部,xib加载更多, 代理模式)

******* HMViewController.h #import "HMViewController.h" #import "HMTg.h" #import "HMTgCell.h" #import "HMTgFooterView.h" @interface HMViewController () <HMTgFooterViewDelegate> @property (nonatomic, strong) NS

xib加载

//aDecoder解析器,将xib解析出来,可以通过alloc.initWithCoder的方法将xib文件加载出来,这个方法比awakeFromNib先调用 -(instancetype)initWithCoder:(NSCoder *)aDecoder{ self = [super initWithCoder:aDecoder]; if (self) { } return self; } -(void)awakeFromNib{ }

XIB加载 ---- [UIViewController _loadViewFromNibNamed:bundle:] loaded the &quot;QuestionAndAnswerController&quot; nib but the view outlet was not set

  问题: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "QuestionAndAnswerController" nib but the view outlet was not set.'    新创建一个ViewControl

通过Xib加载控制器的View

1.创建窗口self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];2.设置窗口根控制器2.1从XIB当中加载控制器.MyViewController *vc = [[MyViewController alloc] initWithNibName:@"VC" bundle:nil];self.window.rootViewController = vc;3.显示窗口[self.window

xib加载的两种方式

•Xib文件的加载 Ø方法1 NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"AppView" owner:nil options:nil]; 这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中 (如果xib如右图所示,那么objs数组中依次会有3个对象:1个UIView.1个UIButton.1个UISwitch) Ø方法2 bundle参数可以为nil,默认就是main bundle UINib *nib

不修改Xcode项目加载Reveal

关于iOS UI调试工具Reveal的配置,很多初学者朋友可能在网上搜索到一些文章,这些文章大部分都是讲述了如何通过配置Xcode项目,通过加入一些库文件,并且在程序中编写额外的代码来调用Reveal服务,从而保证调试程序的时候能够将项目附加到Reveal中分析. 这种方式,比较繁琐,并且每写个项目都需要重复这些繁琐的步骤,这是让人难以忍受的.为此,在下通过诸多分析尝试,终于发现了一种一劳永逸的方法.现在就将这个方法介绍给大家.这个方法不是我发明的,这是Reveal官方的文档提供的方法.但是网上