前言
在自己职业生涯的空档期,就把之前开发中的笔记分享整理出来吧。
1.NSViewController的创建
NSViewController的创建有以下几种方式
1.1 xib创建
let vc = NSViewController.init(nibName:NSNib.Name(rawValue:"cutomController"),bundle:nil)
1.2 storyboard创建
let storyboard = NSStoryboard(name:NSStoryboard.Name(rawValue:"storyboard"),bundle:nil);
let myViewController = storyboard.instantiateController(withIdentifier:NSStroyboard.SceneIdentifier(rawValue:"myVC"))
1.3 纯代码创建
et viewController = NSViewController();
let view = NSView()
viewController.view = view;
2.控制器管理子视图控制器
var parent:NSViewController?//获取父视图控制器
var childViewControllers:[NSViewController]//获取所有子视图控制器
func addChildViewController(_ childViewController:NSViewController)//添加子视图控制器
func removeFromParentViewController()//从父视图移除自己
### 3.控制器之间的切换
控制器之间的切换有一下几种方式
#### 3.1 model切换
当前模态出来的控制器没有被释放,上一个控制器界面用户是无法交互的,调用的函数如下:
func presentViewControllerAsSheet(_ viewController:NSViewController);
#### 3.2 sheet切换
从控制器顶部向下显示
func presentViewControllerAsSheet(_ viewController:NSViewController);
#### 3.3 Popover切换
func presentViewController(_ viewController:NSViewController,asPopoverRelativeTo:positioningRect:NSRect,of positioningView:NSView,preferredEdge:NSRectEdge,behavior:NSPopoverBehavior);
#### 3.4 自定义动画方式
func presentViewController(viewController:NSViewController,animator:NSViewControllerPresentationAnimator)
3.5 转场切换
from,to的控制器父控制器必须拥有同一个控制器,所以先addChildViewControllers:
func transition(from:NSViewController,to:NSViewController,options:NSViewController.TransitionOptions,completionHandler:)
### 4.释放控制器
func dismissViewController(_viewController:NSViewController);