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 ...
随机推荐
- maxContainerCapability 设置不足
异常: REDUCE capability required is more than the supported max container capability in the cluster. K ...
- bzoj 1295: [SCOI2009]最长距离
题目链接 1295: [SCOI2009]最长距离 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1165 Solved: 619[Submit][ ...
- Vistual Studio 2010 调试无法进断点
系统是2003出现的问题 win8就没事 打sp1 补丁就行
- Cyclomatic complexity
Cyclomatic Code Complexity was first introduced by Thomas McCabe in 1976. In 1976, Thomas McCabe pub ...
- linux所有信息查询网址
- 一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。
一个int数组, 比如 array[],里面数据无任何限制,要求求出 所有这样的数array[i],其左边的数都小于等于它,右边的数都大于等于它.能否只用一个额外数组和少量其它空间实现. 分析:这题很 ...
- HDU 4931 Happy Three Friends
#include <cstdio> #include <algorithm> using namespace std; int p1,p2,a[6],T; int main() ...
- HDU 1276 士兵队列训练问题
模拟题,学了一下list it=li.erase(it):指向删除后的第一个元素 #include <cstdio> #include <list> using namespa ...
- Dojo baseurl
dojo.baseUrl baseUrl用来存储dojo.js存放 的跟目录,例如dojo.js的路径是“/web/scripts/dojo-1.3/dojo/dojo.js”则baseUrl为“/w ...
- Html.raw(转帖)
Razor 在JS中嵌入后台变量 HTML 中定义全局变量 @{int CurrentUserId =ViewBag.CurrentUserId;} JS中取值方式var CurrentUserId ...