NSTabViewController-如何创建自定义过渡?

C-V*_*rel 5 macos xcode storyboard swift nstabviewcontroller

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

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

NSG*_*God 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;
}
Run Code Online (Sandbox Code Playgroud)