我正在尝试使用情节提要和新的 NSTabViewController 类为我的应用程序创建一个首选项面板。
我可以让它工作,但故事板中的过渡设置似乎被忽略了。它只是从一个选项卡跳到下一个选项卡,窗口的大小会立即改变。
我认为这可能取决于我是否使用自动布局,但是当我切换它时它似乎并没有改变过渡行为。
我还检查了“传播标题”设置。我曾期望它会采用选项卡项的标签或视图控制器的标题,并将其作为窗口标题传播,但它似乎没有这样做。
有人让这个工作吗?
这是我正在测试的一个简单示例应用程序:https ://www.dropbox.com/s/roxaplxy5gtlqns/Again.zip?dl=0
更新:感谢 Pierre,让这项工作得以实现。最后通过继承 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