
2、点击选择View.xib。在主窗口点击左边图标栏的File’s
Owner图标,在Inspector(检查器)—identity—Custom
Class处修改为RootViewController。
3、然后在在Inspector(检查器)—Connection—Outlets,按住control键,点击view选项后面的圆点拖动到左边栏的view图标(或者主窗口的view控件也行~)
4、初始化的代码语句时,需要注意initWithNibName的参数应该是所绑定的xib文件的文件名。在本例中,示例如下:
RootViewController *controller
= [[RootViewController alloc]initWithNibName:@"View"
bundle:nil]
注意:添加的xib文件名字最好与对应的类名字一致。
如果添加xib文件的类是view的话,直接在在主窗口点击左边图标栏的File’s
FrameWork如何加载资源文件如果我们在生成FrameWork的时候添加了图片和Xib文件, 那么你打包出来的FrameWork里面一定会把你包含的资源包含进去, Xib文件一般会被打包成Nib文件, 如图: (代码我已经放在Github)
9EDA8690-9A61-42DD-8FD4-F130CB1FD6A0.png
1. FrameWork添加Xib文件
之前的文章我有提到过Storyboard加载UIView的Xib文件.使用的方法是:
[[NSBundle mainBundle] loadNibNamed:@"ColorView" owner:self options:nil]
但是mainBundle表示的他从你的主工程里取Bundle文件然后再加载Xib文件, 如果你在FrameWork里面调用这个方法, 那么它一直在你的主工程里面查找这个Xib文件, 然后Xcode就会提示 臣妾找不到这个Xib文件:
reason: 'Could not load NIB in bundle: 'NSBundle
正确的姿势:
你要想在FrameWork正确的加载Xib文件, 那么就要指定你的Bundle, 然后再加载Xib就可以找到了.有两种姿势去指定Bundle文件.
//这个Class对应你工程所在的类名
[[NSBundle bundleForClass:self.class] loadNibNamed:@"ColorView"
owner:self options:nil]
//这个对应你的FrameWor
为了更好理解使用用tabbar和切换视图,我们创建一个Empty Application。
1、 打开Xcode ,新建项目
2、 创建View Controller
在项目上按花键+N创建新文件,创建 Objective-C class 文件,按Next按钮,subClass 选UIViewController 。勾选上xib选项
以同样方式创建另外三个ViewController ,RedViewController ,GreyViewController,YellowViewController。四个View准备好了。那么Tabbar呢?
3、 创建TabBarController.xib文件,选择创建Empty文件
这时候你发现创建的xib文件是空白的,不用慌,去右下角控件栏中把TabBar Controller拖过来就Ok了。
4、 关联TabBarController.xib ,tabbarAppDelegate这两个文件
在上图中选择File’s Owner,打开Identity Inspector,在Class一栏选择tabbarAppDelegate
这样,我们就可以创建TabBarController.xib 文件指向tabbarAppDelegate 文件的Outlet映射了。
5、 在Xcode中的工具栏的View菜单找到 打开Assistant Editor,使tabbarAppDelegate.h和TabBarController.xib 同时打开。
在xib文件上按住control键,往tabbarAppDelegate.h,创建Outlet.
d出窗口输入 rootController,点connect。
6、 添加代码
打开tabbarAppDelegate.m,在didFinishLaunchingWithOptions方法中添加代码:
1.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
2. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]
3. // Override point for customization after application launch.
4. [[NSBundle mainBundle] loadNibNamed:@"TabBarController" owner:self options:nil]
5. [self.window addSubview:self.rootController.view]
6. self.window.backgroundColor = [UIColor whiteColor]
7. [self.window makeKeyAndVisible]
8. return YES
7、 往TabBarController.xib上添加Tab Bar Item,
把控件栏上的Tab Bar Item控件往TabBarController.xib上拖拽即可,一个放4个。
8 、关联Tab Bar Item和***ViewController。
选择其中一个Tab Bar Item,在右上角打开Identity Inspector,在Class中选择BlueViewController:
然后,打开Attribute,在NIB Name选择BlueViewController:
其他3个tab item重复类似的 *** 作,选中对应的ViewController,这样在切换Tab标签时,就可以切换到对应的页面。
9、 设置tab item的属性
选中其中一个tab item ,会在右上角的属性栏里看到如下信息
Badge是红色圈圈里面有数字 ,表示有多少条信息的属性
Identifier 是tab item的样式,选custom是自定义,下面的是系统的样式。我选了其中四种。
bar ITem 的title image在custom的样式下能设置。
10 、剩下的3个Tab Item也做类似的设置即可。
现在基本完工,运行看看结果如何。好吧,其实和第一第二个图是一样的`,这里就不放了。
11 、在viewDidLoad方法加Log观察切换View
可以加写日志看看对应的View是什么时候运行的。第一个运行的View是BlueViewController,点击其他的tab项时,加载其他的view,加载一次之后下次点击不再调用viewDidLoad。
1.- (void)viewDidLoad
2. [super viewDidLoad]
3. NSLog(@"BlueViewController")
4. // Do any additional setup after loading the view from its nib.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)