0

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

我将显示在工具栏视图下方的视图存储在 activeView 中,以便在切换视图时该视图始终为 removeFromSuperview (toolbarView)。

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

- (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];
}
4

1 回答 1

1

您可以通过NSTabView编程方式在选项卡之间使用和切换。

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

于 2013-08-03T22:26:55.547 回答