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

相關文章
相關標籤/搜索