Я сталкиваюсь с незначительными осложнениями с использованием свойств IBInspectable и не уверен, что это может иметь какое-то отношение к моему использованию xibs и xib. Я пытаюсь повторно использовать настраиваемый элемент управления между несколькими контроллерами представлений. Управления пользовательской вкладки менеджер:Значения IBInspectable, не обновляемые в xib
В 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 У меня есть что-то вроде этого:
В видовом контроллер 1 Я наследнике пользовательский вид подкласса TabContainerView, который работает просто отлично, когда я запустить приложение. Я также изменил текст для конкретного контроллера. Список, Map, Filter - это значения свойств IBInspectable для контроллера просмотра. В виду контроллер 2 (не показан), я сделал то же самое, но разные значения свойств IBInspectable, специфичные для контроллера 2. Однако, когда я запускаю приложение, значения никогда не обновляются и всегда остаются такими, как First, Second и Third , Я не уверен, есть ли что-то, что я делаю, что вызывает эту проблему, но любая помощь или советы будут оценены. (IBDesignable, похоже, дает мне много предупреждений, где он ломается и не уверен, может быть, он просто загружает последнее сохраненное значение для xib.)
Если контроллер 1 просмотра работает и контроллер 2 не видит, вам нужно найти различия. – Willeke
Получаете ли вы множество предупреждений с обоими контроллерами? – Willeke