gpt4 book ai didi

objective-c - 在 NSPopover 中切换 NSView

转载 作者:行者123 更新时间:2023-12-03 17:53:29 27 4
gpt4 key购买 nike

我有一个 NSPopover,其中包含一个 View (toolbarView)。该工具栏包含两个按钮(按钮 1 和按钮 2)。当按下按钮 1 时,“showView1”方法被激活,并且 view1 被添加到工具栏 View 下方。类似地,当按下按钮 2 时,将激活“showView2”方法,并将 view2 添加到toolbarView 下方。

我将在toolbarView下方显示的 View 存储在activeView中,以便在切换 View 时该 View 始终是removeFromSuperview(toolbarView)。

代码有效,您可以来回切换 View ,但是,切换 View 时会出现闪烁。我已经尝试了很多事情(主要是在两个 View 上使用 setHidden ),但是如果没有这种烦人的闪烁,我无法让它工作。代码有问题吗?我应该将这两个 View 放入 tabless 选项卡 View 中吗?

- (void)changeView:(NSView*)view {

[view setHidden:YES];
[_activeView setHidden:YES];
[_activeView removeFromSuperview];

CGRect toolbarRect = _toolbarView.frame;
toolbarRect.size = _toolbarInitSize;

NSLog(@"View [x: %f y: %f w: %f h: %f", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height);
NSLog(@"Toolbar [x: %f y: %f w: %f h: %f", _toolbarView.frame.origin.x, _toolbarView.frame.origin.y, _toolbarView.frame.size.width, _toolbarView.frame.size.height);

toolbarRect.size.width = view.frame.size.width;
_toolbarView.frame = toolbarRect;

[_toolbarView addSubview:view];
[view setFrame:[_toolbarView bounds]];

// Move view down
CGRect rect = view.frame;
rect.origin.y -= toolbarRect.size.height;
view.frame = rect;

NSSize frameSize = self.popover.contentSize;
frameSize.width = toolbarRect.size.width;
frameSize.height = toolbarRect.size.height + view.frame.size.height;
self.popover.contentSize = frameSize;

[view setHidden:NO];

_activeView = view;
}

- (IBAction)showView1:(id)sender {
[self changeView:_view1];
}

- (IBAction)showView2:(id)sender {
[self changeView:_view2];
}

最佳答案

您只需使用 NSTabView 并以编程方式在选项卡之间切换。

确保实际的选项卡未显示,因为用于此目的时它看起来很愚蠢。

关于objective-c - 在 NSPopover 中切换 NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18037812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com