【发布时间】:2016-07-30 06:52:42
【问题描述】:
我有一个NSTabViewController,它附加了 6 个标签 (NSViewControllers)。在 IB 中,我可以从一些预定义的转换中进行选择,但我不喜欢其中任何一个。所以我的问题是:我怎样才能进行自己的过渡?
PS:我在我的项目中使用 StoryBoards。
【问题讨论】:
标签: swift xcode macos storyboard nstabviewcontroller
我有一个NSTabViewController,它附加了 6 个标签 (NSViewControllers)。在 IB 中,我可以从一些预定义的转换中进行选择,但我不喜欢其中任何一个。所以我的问题是:我怎样才能进行自己的过渡?
PS:我在我的项目中使用 StoryBoards。
【问题讨论】:
标签: swift xcode macos storyboard nstabviewcontroller
我使用以下方法取得了有限的成功(仍在寻找更好的解决方案,或消除出现的一些视觉问题)。
创建NSTabViewController 的子类,确保将情节提要中选项卡视图控制器的自定义类设置为新创建的子类。
默认情况下,NSTabViewController 在从一个选项卡视图项切换到另一个时会进行以下三个调用:
tabView:willSelectTabViewItem:
transitionFromViewController:toViewController:options:completionHandler:
tabView:didSelectTabViewItem:
在您的自定义子类中,您可以重写transitionFromViewController:toViewController:options:completionHandler: 以实现您自己的切换方法。
我用过类似下面的东西:
- (void)transitionFromViewController:(NSViewController *)fromViewController
toViewController:(NSViewController *)toViewController
options:(NSViewControllerTransitionOptions)options
completionHandler:(void (^)(void))completion {
NSWindow *window = self.view.window;
NSView *superview = fromViewController.view.superview;
[superview replaceSubview:fromViewController.view with:blankView()];
[window resizeToSize:toViewController.view.frame.size]; // category defined elsewhere
[superview replaceSubview:blankView() with:toViewController.view];
window.title = toViewController.title;
}
【讨论】: