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

标签 swift xcode macos storyboard nstabviewcontroller

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

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

最佳答案

我使用以下方法取得了有限的成功(仍在寻找更好的解决方案,或消除出现的一些视觉问题)。

创建 NSTabViewController 的子类,确保将 Storyboard中选项卡 View Controller 的自定义类设置为新创建的子类。

默认情况下,NSTabViewController 在从一个选项卡 View 项切换到另一个时进行以下三个调用:

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

关于swift - NSTabViewController - 如何创建自定义转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36509246/

相关文章:

iphone - 如何恢复所有那些好的旧 Xcode 功能?

arrays - 在 Swift 中按不同的属性值对自定义对象进行排序

具有递归函数的 C++ 线程

linux - grep -xf 与预期输出不匹配,可能是一个错误

swift - Xcode 调试器显示不正确的变量值

ios - Travis CI、Xcode - 使用 xcpretty 时不会进一步传递退出命令

ios - Objective-C - 分配、复制、保留

ios - 为什么在相似的代码片段中初始化的顺序不同。 swift 4

ios - 对象未添加到数组中 - swift iOS

swift - 访问 IBOutletCollection 中的元素