Получение NSView, чтобы появиться программно в Objective C - PullRequest
2 голосов
/ 12 августа 2011

У меня есть объект NSView, который возвращается мне в результате выполнения функции. Я знаю, что представление является действительным, потому что я могу видеть содержимое представления, если я делаю это:

NSRect rect = NSMakeRect(600,600,200,200);
                    NSWindow *testWindow = [[NSWindow alloc] initWithContentRect:rect styleMask:NSTexturedBackgroundWindowMask backing: NSBackingStoreBuffered defer:NO];
                    [[testWindow contentView] addSubview:returnedView];
                    [testWindow makeKeyAndOrderFront:NSApp];

В моем приложении у меня есть окно с пользовательским представлением (содержит текст), в котором есть выход, на который ссылается мой код с помощью IBOutlet. Я пытаюсь добавить представление, которое мне возвращают, как подпредставление этого выхода.

[referencedView addSubView:returnedView]
[referencedView setNeedsDisplay:YES];

Ссылочный вид виден (я вижу текст в нем), но возвращенный вид не отображается сверху. Я что-то забыл?

Вот так выглядит мой код:

[returnedView setFrame:NSMakeRect(0,0,200,200)];
                    [referencedView addSubview:returnedView];
                    [referencedView setNeedsDisplay:YES];
                    [referencedView drawRect:[referencedView bounds]];

Ответы [ 2 ]

3 голосов
/ 12 августа 2011

Представления могут быть только в ОДНОМ супервидении, это то, что я только что узнал.У меня был тестовый код и код, который я хотел работать, поэтому он удалял мое представление и вместо этого помещал его в окно.

0 голосов
/ 12 августа 2011

Это пользовательское представление (с текстом в нем) имеет пользовательскую реализацию drawRect, в которой текст рисуется, верно? В этом случае моя идея заключается в том, что вы захотите вызвать реализацию drawRect для *1003*, чтобы убедиться, что подпредставления также нарисованы.

...