gpt4 book ai didi

cocoa - NSTabViewController 忽略转换和标题传播设置

转载 作者:行者123 更新时间:2023-12-03 16:02:23 27 4
gpt4 key购买 nike

我正在尝试使用 Storyboard和新的 NSTabViewController 类为我的应用程序创建一个首选项面板。

我可以让它工作,但是 Storyboard中的过渡设置似乎被忽略了。它只是从一个选项卡跳到下一个选项卡,窗口的大小会瞬间改变。

我认为这可能取决于我是否使用自动布局,但当我切换它时它似乎并没有改变转换行为。

我还选中了“传播标题”设置。我原以为它会采用选项卡项的标签或 View Controller 的标题,并将其传播为窗口标题,但它似乎并没有这样做。

有人能做到这一点吗?

这是我正在测试的一个简单的示例应用程序:https://www.dropbox.com/s/roxaplxy5gtlqns/Again.zip?dl=0

更新:感谢皮埃尔,让这个工作得以实现。最终通过子类化 NSTabViewController 制作了一个很好的转换首选项窗口,如下所示:

@implementation MCPreferencesTabViewController

-(void)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem
{
[super tabView:tabView willSelectTabViewItem:tabViewItem];

NSTabViewItem *currentTabItem = tabView.selectedTabViewItem;
currentTabItem.view.hidden = YES;
tabViewItem.view.hidden = YES;

NSWindow *window = self.view.window;
NSSize contentSize = tabViewItem.view.fittingSize;
NSSize newWindowSize = [window frameRectForContentRect:(CGRect){CGPointZero, contentSize}].size;

NSRect frame = [window frame];
frame.origin.y += frame.size.height;
frame.origin.y -= newWindowSize.height;
frame.size = newWindowSize;

[self.view.window setFrame:frame display:NO animate:YES];
}

- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem
{
[super tabView:tabView didSelectTabViewItem:tabViewItem];
tabViewItem.view.hidden = NO;
}

@end

最佳答案

您需要使 NSTabViewController 成为 NSTabView 的委托(delegate)。

在 Interface Builder 中,按住 Control 键从“无阴影选项卡 View ”拖动到“选项卡 View Controller ”并设置委托(delegate)导出。

人们会期望 Interface Builder 在创建新的选项卡 View Controller 时正确设置它。事实并非如此。

关于cocoa - NSTabViewController 忽略转换和标题传播设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488481/

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