2016-03-18 37 views
0

我正在運行一個使用IBInspectable屬性的小複雜事件,並不確定它是否可能與我的xibs和xib用法有關。我試圖重複使用多個視圖控制器之間的自定義控件。控制是一個自定義標籤管理器:IBInspectable屬性值不在xib中更新

Tab Manager Xib

enter image description here

的IBInspectable屬性在此配置XIB爲:第一,第二,第三。

以下是頭文件的相應代碼。

IB_DESIGNABLE 
@interface TabContainerView : NSView 
@property (nonatomic, strong) IBOutlet NSView *view; 

@property (weak) IBOutlet TabContentView *contentView; 
@property (weak) IBOutlet TabView *firstTab; 
@property (weak) IBOutlet TabView *secondTab; 
@property (weak) IBOutlet TabView *thirdTab; 

@property (nonatomic, strong) IBInspectable NSString *tabOneText; 
@property (nonatomic, strong) IBInspectable NSString *tabTwoText; 
@property (nonatomic, strong) IBInspectable NSString *tabThreeText; 

@end 

#import "TabContainerView.h" 

@interface TabContainerView() 
@property (nonatomic, strong) NSMutableArray *tabsArray; 
@property (nonatomic, assign) NSInteger selectedTabIndex; 

@property (weak) IBOutlet NSTextField *tabOneTextField; 
@property (weak) IBOutlet NSTextField *tabTwoTextField; 
@property (weak) IBOutlet NSTextField *tabThreeTextField; 


@end 

@implementation TabContainerView 

#pragma mark Init 

- (id)initWithFrame:(NSRect)frameRect { 
    NSString* nibName = NSStringFromClass([self class]); 
    self = [super initWithFrame:frameRect]; 
    if (self) { 
     if ([[NSBundle mainBundle] loadNibNamed:nibName 
              owner:self 
           topLevelObjects:nil]) { 
      [self configureView]; 
     } 
    } 
    return self; 
} 

#pragma mark Configure View 

- (void)configureView{ 
    [self.view setFrame:[self bounds]]; 
    [self addSubview:self.view]; 


    self.tabOneTextField.stringValue = self.tabOneText; 
    self.tabTwoTextField.stringValue = self.tabTwoText; 
    self.tabThreeTextField.stringValue = self.tabThreeText; 

} 

@end 

這可以在TabContainerView.xib中正常工作,沒有問題。現在當我試圖在兩個不同的視圖控制器中使用這個控件時,我遇到了問題。我的兩個視圖控制器也是從Xib加載的。

在視圖控制器1我有這樣的事情:

enter image description here

在我的子類的自定義視圖的TabContainerView子當我運行的應用程序,它工作得很好視圖控制器1。我也改變了這個視圖控制器的文本。 List,Map,Filter是視圖控制器1的IBInspectable屬性值。在視圖控制器2(未顯示)中,我做了完全相同的事情,但是不同的IBInspectable屬性值特定於視圖控制器2.但是,當我運行應用程序時,值永遠不會更新並始終保持爲第一,第二和第三。我不確定是否有我正在做的事情導致這個問題,但任何幫助或提示將不勝感激。 (IBDesignable似乎給了我很多警告,它在哪裏打破,不知道它是否只是加載xib的最後保存的值。)

+0

如果視圖控制器1確實工作並且視圖控制器2沒有,您必須找到差異。 – Willeke

+0

你是否對視圖控制器有很多警告? – Willeke

回答

0

您是否在控制器2的.h文件中導入了#import「TabContainerView.h」 。

+0

是的,我試過這個,仍然是,控制標籤最終還是說第一,第二和第三。 – zic10