У меня есть приложение OSX, написанное на Objective-C.Он отображает NSView
в NSWindow
, проблема в Я не могу изменить его код .Исходная иерархия модели выглядит следующим образом:
NSWindow
|---> original NSView
|---> (...)
Я хотел бы изменить иерархию следующим образом:
NSWindow
|---> NSStackView
|---> original NSView
| |---> (...)
|---> some additional NSView (say NSTextField)
Как можно отобразить как исходный NSView
, так и дополнительныйNSView
рядом друг с другом, используя NSStackView
?
Мой нынешний подход был более или менее похож на этот (пример упрощен):
- (void)createFirstView {
NSTextField *label1 = [NSTextField labelWithString:@"First view."];
[_window setContentView: label1];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// I cannot modify this procedure:
[self createFirstView];
// I can modify that:
NSTextField *label2 = [NSTextField labelWithString:@"Second view."];
NSView *firstView = [_window contentView];
[firstView removeFromSuperview];
NSStackView *st = [NSStackView stackViewWithViews:@[firstView, label2]];
[_window setContentView:st];
}
К сожалению, NSWindow
послепри запуске этого кода отображается только метка «Второй вид»: