Пользовательский вид для NSPopupButton NSMenu

У меня возникли проблемы с настройкой пользовательского NSView для пунктов меню NSPopupButton. Вот что у меня есть до сих пор:

@interface ViewController ()

@property (weak) IBOutlet NSPopUpButton *popupButton;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    for(int i = 0; i < 25; i++) {
        NSMenuItem *menuItem = [[NSMenuItem alloc ] initWithTitle:[NSString stringWithFormat:@"%d", i] action:@selector(itemClicked:) keyEquivalent:@""];

        MenuView  *menuView = [[MenuView alloc] initWithFrame:CGRectMake(0, 0, 184, 50)];
        menuView.displayText.stringValue = @"This is a test";

        [menuItem setView:menuView];
        [self.popupButton.menu addItem:menuItem];
    }
}

- (void)itemClicked:(id)sender {

}

@end

//Мой пользовательский вид

@implementation MenuView
- (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;
}

- (void)awakeFromNib {
    [super awakeFromNib];
    [self configureView];
}

- (void)configureView {
    [self setWantsLayer:YES];
    self.layer.backgroundColor = [NSColor blueColor].CGColor;
}


@end

//Вот как выглядит мой xib MenuView

введите здесь описание изображения

И вот проблема:

введите здесь описание изображения

Кажется, что это должно быть довольно простой задачей, но я не уверен, что происходит с моим представлением и почему моя метка в представлении, кажется, исчезает и не отображает текст для каждого из представлений. Я копался в документации и наткнулся на это для меню NSPopupButton:

// Overrides behavior of NSView.  This is the menu for the popup, not a context menu.  PopUpButtons do not have context menus.
@property (nullable, strong) NSMenu *menu;

Я не уверен, есть ли что-то, что я делаю неправильно, что вызывает эту проблему, или то, что я пытаюсь сделать в этом контексте, недостижимо вне NSPopupButton NSMenu. Если у кого-то есть опыт в этом и может дать совет, я был бы очень признателен.


person zic10    schedule 15.04.2016    source источник
comment
Вы используете представление, созданное с помощью initWithFrame, это не представление из пера.   -  person Willeke    schedule 15.04.2016