Xcode5 创建模板和UIView 关联XIB
转自:http://www.cnblogs.com/china-ldw/p/3533896.html
在做ios应用开发的过程,难免遇到要创建 子view 和 自定义view的时候,归根到底,我们需要得到一个UIView;
要得到这个UIView,大致有三种方法:
1,创建一个UIViewController,带上一个XIB,得到的UIView为 UIViewController.view;
2,创建一个XIB,然后直接load这个XIB;代码如下
NSArray *nibView = [[NSBundlemainBundle] loadNibNamed:@"xib文件名字"owner:self options:nil]; UIView *view = [[nibView objectAtIndex:0] retain];
3,创建一个继承于UIView的类,在.h和.m文件用代码写;
这三种的方法,相信大家大致有个优劣判断;
我这里用到的是一种结合了三者的方法:
- 用UIView的类关联XIB;
这个方法网上也有多种实现方法。我这里再提供一种:
1,创建一个继承于UIView的类MTTestView,这里有了MTTestView.h和MTTestView.m文件;
2,创建一个XIB,命名为MTTestView.xib;
3,打开MTTestView.xib,在File's Owner设置Class为UIViewController;
设置rootView的Class为你创建的类名MTTestView;
这样就将类和XIB关联起来了;最后我们要load这个view了.
这里的load方法我做成了一个category(因为用到的地方比较多):
UIView+LoadFromNib.h

- 1 #import <UIKit/UIKit.h>
- 2
- 3 @interface UIView (LoadFromNib)
- 4
- 5 + (id)loadFromNib;
- 6
- 7 @end

UIView+LoadFromNib.m

- 1 #import "UIView+LoadFromNib.h"
- 2
- 3 @implementation UIView (LoadFromNib)
- 4
- 5 + (id)loadFromNib
- 6 {
- 7 id view = nil;
- 8 NSString *xibName = NSStringFromClass([self class]);
- 9 UIViewController *temporaryController = [[UIViewController alloc] initWithNibName:xibName bundle:nil];
- 10 if(temporaryController)
- 11 {
- 12 view = temporaryController.view;
- 13 }
- 14 return view;
- 15 }
- 16
- 17 @end

最后,用法为MTTestView *view = [MTTestViewloadFromNib];这样就得到了我们想要的view了;
到这里,还没完。创建文件,设置XIB这些不需要动脑且重复的体力活,不应该要人来做,交给电脑就行了。
这里就涉及到了xcode的文件模板了,关于创建详解,请自行google,参考如下
http://www.cnblogs.com/powerauras/p/3358129.html
根据上文中的要求,我们要创建一个带xib的UIView(这里最终目的)。
1,首先打开终端,找到xcode ios模板并打开:命令为
open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates(这是我Mac上的路径)
进入Objective-C class.xctemplate目录下;打开TemplateInfo.plist
在Options->Item3->RequiredOptions->cocoaTouchSubclass中加一个UIView(原始的只有UIViewController为UITableViewController);
相信大家明白这样做的目的:让创建UIView时 With XIB for user interface 这个选项可选;
最后一步:在Objective-C class.xctemplate目录下,添加一个目录UIViewwithXIB
这里边就是我们创建的UIViewwithXIB模板了;当然需要修改___FILEBASENAME___.xib了;(上文中已提到,不重复了);
Xcode5 创建模板和UIView 关联XIB的更多相关文章
- uiview关联xib
1,在需要实例的地方 //加载一个uiview的作法 [LotteryInvestigationView *lotteryInvestigationView=[[[NSBundle mainBundl ...
- iOS 给UIView添加xib
2017-08-25编辑:这文章有点过时了 推荐新的文章:http://www.cnblogs.com/hero11223/p/6881848.html 一段时间没敲代码,以前一些简单的都不会做了,翻 ...
- 5 approach to load UIView from Xib
After the past few years I found that the only manageable way for creating/maintaining view (or any ...
- Orchard之创建模板
orchard创建模板的两种基本方式: 第一种:通过候补创建(需要用到候补神器): 第二种:通过Shape Tracing创建:
- Django创建模板、URL模式、创建视图函数
1.在应用目录下创建模板(templates目录) 在模板目录下创建archive.html <!DOCTYPE html> <html lang="en"> ...
- Aurelia 创建模板
今天介绍一下Aurelia创建模板的三种方式. 模板既可以作为页面也可以作为组件. 1. View+View Model Aurelia的模板通常由一个html文件和一个同名的ts或js文件组成,文件 ...
- Sitecore CMS中创建模板
如何在Sitecore CMS中创建模板. 在/sitecore/templates选择应创建模板的文件夹中. 注意:在多站点项目中,通常会在模板所属的网站名称的/sitecore/templates ...
- 使用MyGeneration创建模板:介绍(翻译)
原文信息 原文地址 原文作者信息: Justin Greenwood MyGeneration Software http://www.mygenerationsoftware.com April 2 ...
- 创建Hive/hbase相关联的表异常
hive> CREATE TABLE hperson(id string, name string,email string) STORED BY 'org.apache.hadoop.hive ...
随机推荐
- C++的常量折叠(三)
背景知识 在开始之前先说一下符号表,这个编译器中的东西.下面看一下百度百科中的描述: 符号表是一种用于语言翻译器中的数据结构.在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如 ...
- windows server2008 r2修改远程桌面连接端口。
1. windows 2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,通常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口. 2.更改过程: 2-1.打开注册表: ...
- 关于$.ajax的请求格式
1 $.ajax({ 2 url: "http://localhost:5311/UserService.asmx/GetLoginId",//请求的URL 3 type: &qu ...
- (C#)Windows Shell 编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令
原文(C#)Windows Shell 编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:( ...
- angulajs 如何在controller 之间共享数据
当在一个controller中 通过设置$scope的数据,来影响其它control的范围时,可以使用$rootScope 举个例子: 在一个control A范围内设置 mainApp.contro ...
- Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
首先,先解决第一个问题,我们使用VS2010开发的时候,调试的时候,中文打印出来都是乱码,这个问题很纠结. 如下图: CCLOG("cclog: 测试使用标签的自动换行和个别字体大写&quo ...
- android TDD平台插入双卡时,查看允许返回发送报告的选项,去掉勾选,不起作用
请在MultiSimPreferenceActivity.java 下修改 修改1: 函数 isChecked() private boolean isChecked(String prefe ...
- Android学习笔记(十五)——碎片的生命周期(附源代码)
碎片的生命周期 点击下载源代码 与活动类似.碎片具有自己的生命周期.理解了碎片的生命周期后.我们能够在碎片被销毁时正确地保存事实上例,在碎片被重建时将其还原到前一个状态. 1.使用上一篇的项目Frag ...
- Android开发之TextView高级应用
Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...
- Suricata, to 10Gbps and beyond(X86架构)
Introduction Since the beginning of July 2012, OISF team is able to access to a server where one int ...