2016-03-18 5 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

В видовом контроллер 1 Я наследнике пользовательский вид подкласса TabContainerView, который работает просто отлично, когда я запустить приложение. Я также изменил текст для конкретного контроллера. Список, Map, Filter - это значения свойств IBInspectable для контроллера просмотра. В виду контроллер 2 (не показан), я сделал то же самое, но разные значения свойств IBInspectable, специфичные для контроллера 2. Однако, когда я запускаю приложение, значения никогда не обновляются и всегда остаются такими, как First, Second и Third , Я не уверен, есть ли что-то, что я делаю, что вызывает эту проблему, но любая помощь или советы будут оценены. (IBDesignable, похоже, дает мне много предупреждений, где он ломается и не уверен, может быть, он просто загружает последнее сохраненное значение для xib.)

+0

Если контроллер 1 просмотра работает и контроллер 2 не видит, вам нужно найти различия. – Willeke

+0

Получаете ли вы множество предупреждений с обоими контроллерами? – Willeke

ответ

0

Вы импортировали #import «TabContainerView.h» в файл контроллера 2 .h ,

+0

Да, я пробовал это и все еще, вкладки управления в конечном итоге все еще говорят «Первый, Второй и Третий». – zic10

 Смежные вопросы

  • Нет связанных вопросов^_^