NSTabViewController - 如何创建自定义转换?

时间:2016-04-08 20:57:56

标签: swift xcode macos storyboard nstabviewcontroller

我有NSTabViewController附加了6个标签(NSViewController s)。从IB我可以从一些预定义的转换中选择,但我不喜欢它们中的任何一个。所以我的问题是:我如何进行自己的过渡?

PS:我在我的项目中使用了StoryBoards。

1 个答案:

答案 0 :(得分:0)

我使用了以下方法,但收效有限(仍在寻找更好的解决方案,或者消除了出现的视觉障碍)。

创建NSTabViewController的子类,请确保将情节提要中的选项卡视图控制器的自定义类设置为新创建的子类。

默认情况下,NSTabViewController在从一个选项卡视图项目切换到另一选项卡视图项目时会进行以下三个呼叫:

  1. tabView:willSelectTabViewItem:

  2. transitionFromViewController:toViewController:options:completionHandler:

  3. 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;
}