5

我有一个NSTabViewController附有 6 个标签(NSViewControllers)的。在 IB 中,我可以从一些预定义的转换中进行选择,但我不喜欢其中任何一个。所以我的问题是:我怎样才能进行自己的过渡?

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

4

1 回答 1

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;
}
于 2019-04-26T16:30:07.720 回答