Xcode5 建立模板和UIView 关联XIB

在作ios应用开发的过程,不免遇到要建立 子view 和 自定义view的时候,归根到底,咱们须要获得一个UIView;html

要获得这个UIView,大体有三种方法:ios

1,建立一个UIViewController,带上一个XIB,获得的UIView为 UIViewController.view;git

2,建立一个XIB,而后直接load这个XIB;代码以下github

NSArray *nibView =  [[NSBundlemainBundle] loadNibNamed:@"xib文件名字"owner:self options:nil];   UIView *view = [[nibView objectAtIndex:0] retain];  xcode

3,建立一个继承于UIView的类,在.h和.m文件用代码写;app

这三种的方法,相信你们大体有个优劣判断;ui

我这里用到的是一种结合了三者的方法:google

  • 用UIView的类关联XIB;

这个方法网上也有多种实现方法。我这里再提供一种:spa

1,建立一个继承于UIView的类MTTestView,这里有了MTTestView.h和MTTestView.m文件;code

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了;(上文中已提到,不重复了);

 

附上示例:https://github.com/ludawei/MTTestView/tree/master

相关文章
相关标签/搜索