2012-11-26 49 views
0

我需要一個如何從nib文件實例化自定義視圖的示例。我把頭繞在幾個計算器上,但是我沒有明白。也許我只需要一個提示如何去做。iOS通過多個UIViewController從Nib文件實例化自定義視圖

我想要做的是 - 使用界面構建器創建自定義視圖。它應該是一個模板,以便我可以多次實例化它以將其添加到多個視圖控制器。

到目前爲止,我創建了一個名爲MyIssueView.xib的自定義視圖xib文件。其實只是主視圖和一些標籤。

我創建了一個UIView的子類,它被稱爲IssueView,它的出口是MyIssueView.xib中的標籤。

現在我該如何與IB連接網點?我如何從任何ViewController實例化IssueView?

會很高興的例子! 乾杯。

UPDATE:

我現在有

IssueView.xib IssueView.h(UIView子類) IssueView.m

我IssueView.h:

#import <UIKit/UIKit.h> 

@interface IssueView : UIView 

@property (weak, nonatomic) IBOutlet UILabel *label1; 
@property (weak, nonatomic) IBOutlet UILabel *label2; 
@property (weak, nonatomic) IBOutlet UILabel *label3; 
@property (weak, nonatomic) IBOutlet UILabel *label4; 

@end 

我的IssueView.m:

#import "IssueView.h" 

@implementation IssueView 
@end 

我ViewController.m:

#import "AllIssuesViewController1.h" 
#import "IssueView.h" 
#import "UIView+NibLoading.h" 

@interface AllIssuesViewController1() 

@end 

@implementation AllIssuesViewController1 


- (void) loadView 
{ 

} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    _issueView = [IssueView loadInstanceFromNib]; 
} 

它給了我一個錯誤:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x8292580> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label1.' 

回答

8

我有一個擴展的UIView稱爲UIView的+ NibLoading類別。

在它的代碼...

#import "UIView+NibLoading.h" 

@implementation UIView (NibLoading) 

+ (id)loadInstanceFromNib 
{ 
    UIView *result; 

    NSArray* elements = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil]; 

    for (id anObject in elements) { 
     if ([anObject isKindOfClass:[self class]]) { 
      result = anObject; 
      break; 
     } 
    } 

    return result; 
} 

@end 

然後,當我想從實例化一個筆尖一個UIView子類,我只是進口類,我可以運行...

self.issueView = [IssueView loadInstanceFromNib];\ 

您需要將這些標籤連接這樣的...

enter image description here

我如果您將標籤連接到「文件所有者」,那麼您需要刪除這些連接。

+0

非常感謝您的回覆。我假設我必須在界面生成器的文件檢查器中將我的IssueView設置爲MainView的類?並連接網點? –

+0

是的,將IB文件的主視圖設置爲IssueView。 (注意,將文件的所有者保留爲NSObject,並且你必須調用這些文件同樣的東西blah.h和blah.m和blah.xib – Fogmeister

+0

我得到一個錯誤看我的更新它發生在類 - 在它表示NSArray *元素的行上...... –

相關問題