storyboards and controllers on os x - apple inc.€¦ · storyboards and controllers on os x...
TRANSCRIPT
![Page 1: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/1.jpg)
© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.
#WWDC14
Storyboards and Controllers on OS XContain yourself
Session 212 Mike Swingler Interface Builder Engineer
Frameworks
!
Raleigh Ledet AppKit Engineer
![Page 2: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/2.jpg)
IntroductionCool new API concepts
Storyboards
View controllers
Window controllers
Gesture recognizers
!
![Page 3: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/3.jpg)
StoryboardsLines and boxes and segues, oh my
![Page 4: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/4.jpg)
Storyboards on OS XXcode
![Page 5: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/5.jpg)
Storyboards on OS XXcode
![Page 6: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/6.jpg)
Storyboards on OS XXcode
![Page 7: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/7.jpg)
Storyboards on OS XXcode
![Page 8: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/8.jpg)
Storyboards on OS XXcode
![Page 9: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/9.jpg)
Storyboards on OS XXcode
![Page 10: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/10.jpg)
Storyboards on OS XXcode
![Page 11: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/11.jpg)
Storyboards on OS XXcode
![Page 12: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/12.jpg)
Storyboards on OS XView Controllers
Connection between model and view
![Page 13: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/13.jpg)
Storyboards on OS XView Controllers
Connection between model and view
![Page 14: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/14.jpg)
Storyboards on OS XView Controllers
Connection between model and view
Place views
![Page 15: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/15.jpg)
Storyboards on OS XView Controllers
Connection between model and view
Place views
![Page 16: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/16.jpg)
Storyboards on OS XView Controllers
Connection between model and view
Place views
Setup Auto Layout constraints
![Page 17: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/17.jpg)
Storyboards on OS XView Controllers
Connection between model and view
Place views
Setup Auto Layout constraints
Connect actions and outlets
![Page 18: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/18.jpg)
Storyboards on OS XView Controllers
Connection between model and view
Place views
Setup Auto Layout constraints
Connect actions and outlets
![Page 19: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/19.jpg)
Storyboards on OS XView Controllers
Connection between model and view
Place views
Setup Auto Layout constraints
Connect actions and outlets
![Page 20: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/20.jpg)
Storyboards on OS XView Controllers
Connection between model and view
Place views
Setup Auto Layout constraints
Connect actions and outlets
![Page 21: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/21.jpg)
Storyboards on OS XSegues
![Page 22: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/22.jpg)
Storyboards on OS XSegues
![Page 23: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/23.jpg)
Storyboards on OS XSegues
Containment
Window
Split
Tab
![Page 24: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/24.jpg)
Storyboards on OS XSegues
Containment
Window
Split
Tab
Presentation
Modal
Sheet
Popover
![Page 25: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/25.jpg)
Storyboards on OS XSegues
Containment
Window
Split
Tab
Presentation
Modal
Sheet
Popover
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender;
![Page 26: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/26.jpg)
Storyboards on OS XBuild and run time
![Page 27: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/27.jpg)
Storyboards on OS XBuild and run time
![Page 28: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/28.jpg)
Storyboards on OS XBuild and run time
![Page 29: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/29.jpg)
Storyboards on OS XBuild and run time
![Page 30: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/30.jpg)
Storyboards on OS XBuild and run time
![Page 31: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/31.jpg)
Storyboards on OS XBuild and run time
![Page 32: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/32.jpg)
Storyboards on OS XBuild and run time
![Page 33: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/33.jpg)
Storyboards on OS XBuild and run time
![Page 34: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/34.jpg)
Storyboards on OS XBuild and run time
Pages.storyboardc
![Page 35: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/35.jpg)
Storyboards on OS XBuild and run time
Pages.storyboardc
![Page 36: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/36.jpg)
Storyboards on OS XBuild and run time
Pages.storyboardc
![Page 37: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/37.jpg)
Storyboards on OS XBuild and run time
Pages.storyboardc
![Page 38: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/38.jpg)
Storyboards on OS XBuild and run time
Pages.storyboardc
Pages.app
![Page 39: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/39.jpg)
Storyboards on OS XBuild and run time
![Page 40: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/40.jpg)
DemoGetting started with Storyboards on OS X
Mike Swingler
![Page 41: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/41.jpg)
APILooking under the hood
Raleigh Ledet AppKit Engineer
![Page 42: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/42.jpg)
APILooking under the hood
Storyboards
View controllers
Window controllers
Gesture recognizers
![Page 43: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/43.jpg)
Storyboard
![Page 44: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/44.jpg)
Storyboard
NSMainStoryboardFile
![Page 45: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/45.jpg)
Storyboard
+ (instancetype)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil; !
- (id)instantiateInitialController; !
- (id)instantiateControllerWithIdentifier:(NSString *)identifier;
![Page 46: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/46.jpg)
Storyboard
+ (instancetype)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil; !
- (id)instantiateInitialController; !
- (id)instantiateControllerWithIdentifier:(NSString *)identifier;
![Page 47: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/47.jpg)
Storyboard
+ (instancetype)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil; !
- (id)instantiateInitialController; !
- (id)instantiateControllerWithIdentifier:(NSString *)identifier;
![Page 48: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/48.jpg)
Storyboard
+ (instancetype)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil; !
- (id)instantiateInitialController; !
- (id)instantiateControllerWithIdentifier:(NSString *)identifier;
![Page 49: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/49.jpg)
NSViewController
Loading and layout
Containers
Triggered segues
Manual presentation
!
![Page 50: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/50.jpg)
NSViewControllerView loading, display, and layout
@property (readonly, getter=isViewLoaded) BOOL viewLoaded; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
![Page 51: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/51.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = NO; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
-init
![Page 52: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/52.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = NO; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
-loadView
![Page 53: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/53.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
V
-loadView -setView:
![Page 54: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/54.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
V
-loadView -setView:
![Page 55: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/55.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
V
![Page 56: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/56.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
V
![Page 57: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/57.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
VV
V
-addSubview: -setHidden:NO !
-orderFront:
VV
![Page 58: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/58.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
V
VV
V
VV
![Page 59: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/59.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
VV
VV
V
VV
![Page 60: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/60.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
V
VV
V
V
V
V
V
VV
V
-orderOut: -setHidden:YES -removeFromSuperview
![Page 61: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/61.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
VV
V
V
VV
V
V
V
VV
![Page 62: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/62.jpg)
@property (readonly, getter=isViewLoaded) BOOL viewLoaded = YES; - (void)viewDidLoad; - (void)viewWillAppear; - (void)viewDidAppear; - (void)viewWillDisappear; - (void)viewDidDisappear; !
- (void)updateViewConstraints; - (void)viewWillLayout; - (void)viewDidLayout;
ViewController
NSViewControllerView loading, display, and layout
VV
V
V
VV
V
V
V
VV
![Page 63: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/63.jpg)
NSViewControllerNow in responder chain!
![Page 64: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/64.jpg)
NSViewControllerNow in responder chain!
CanvasView
![Page 65: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/65.jpg)
NSViewControllerNow in responder chain!
Window’s WindowControllerCanvasView NSSplitView Window
![Page 66: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/66.jpg)
NSViewControllerNow in responder chain!
Window’s WindowControllerCanvasView NSSplitView Window
CanvasView Controller
NSSplitView Controller
![Page 67: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/67.jpg)
NSViewControllerNow in responder chain!
Window’s WindowControllerCanvasView NSSplitView Window
CanvasView Controller
NSSplitView Controller
![Page 68: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/68.jpg)
NSViewControllerContainment
![Page 69: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/69.jpg)
NSTabViewController
![Page 70: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/70.jpg)
NSTabViewController
Manages an NSTabView
![Page 71: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/71.jpg)
NSTabViewController
Manages an NSTabView
Lazily loads tab views
![Page 72: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/72.jpg)
NSTabViewController
Manages an NSTabView
Lazily loads tab views
Easy tab customization
![Page 73: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/73.jpg)
NSTabViewController
Manages an NSTabView
Lazily loads tab views
Easy tab customization
Easily use toolbar as tab switcher
![Page 74: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/74.jpg)
Properties of NSTabViewItem !
-identifier -label -tooltip
NSTabViewControllerContainment
NSTabView
NSTabViewItem NSTabViewItem NSTabViewItem
view view view
![Page 75: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/75.jpg)
Properties of NSTabViewItem !
-identifier -label -tooltip
NSTabViewControllerContainment
NSTabView
NSTabViewItem NSTabViewItem NSTabViewItem
view view view
![Page 76: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/76.jpg)
Properties of NSTabViewItem !
-identifier -label -tooltip
NSTabViewControllerContainment
NSTabView
NSTabViewItem NSTabViewItem NSTabViewItem
view view view
![Page 77: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/77.jpg)
NSTabViewControllerContainment
Properties of NSTabViewItem !
-identifier -label -color -tooltip -viewController -image
NSTabViewItem NSTabViewItem NSTabViewItem
view view view
NSTabView
![Page 78: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/78.jpg)
NSTabViewControllerContainment
Properties of NSTabViewItem !
-identifier -label -color -tooltip -viewController -image
NSTabViewItem NSTabViewItem NSTabViewItem
view view view
NSTabViewController
NSViewController NSViewController NSViewController
NSTabView
![Page 79: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/79.jpg)
NSTabViewControllerContainment
@property (copy) NSArray *tabViewItems; @property NSInteger selectedTabViewItemIndex; !
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem; - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem atIndex:(NSInteger)index; - (void)removeTabViewItem:(NSTabViewItem *)tabViewItem; !
- (NSTabViewItem *)tabViewItemForViewController:(NSViewController *)vc;
NSTabViewItem NSTabViewItem
![Page 80: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/80.jpg)
NSTabViewControllerContainment
@property (copy) NSArray *tabViewItems; @property NSInteger selectedTabViewItemIndex; !
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem; - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem atIndex:(NSInteger)index; - (void)removeTabViewItem:(NSTabViewItem *)tabViewItem; !
- (NSTabViewItem *)tabViewItemForViewController:(NSViewController *)vc;
NSTabViewItem NSTabViewItem
![Page 81: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/81.jpg)
NSTabViewControllerContainment
@property (copy) NSArray *tabViewItems; @property NSInteger selectedTabViewItemIndex; !
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem; - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem atIndex:(NSInteger)index; - (void)removeTabViewItem:(NSTabViewItem *)tabViewItem; !
- (NSTabViewItem *)tabViewItemForViewController:(NSViewController *)vc;
NSTabViewItem NSTabViewItem
![Page 82: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/82.jpg)
NSTabViewControllerContainment
@property (copy) NSArray *tabViewItems; @property NSInteger selectedTabViewItemIndex; !
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem; - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem atIndex:(NSInteger)index; - (void)removeTabViewItem:(NSTabViewItem *)tabViewItem; !
- (NSTabViewItem *)tabViewItemForViewController:(NSViewController *)vc;
NSTabViewItem NSTabViewItem
![Page 83: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/83.jpg)
NSTabViewControllerContainment
@property (copy) NSArray *tabViewItems; @property NSInteger selectedTabViewItemIndex; !
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem; - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem atIndex:(NSInteger)index; - (void)removeTabViewItem:(NSTabViewItem *)tabViewItem; !
- (NSTabViewItem *)tabViewItemForViewController:(NSViewController *)vc;
NSTabViewItem NSTabViewItem
![Page 84: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/84.jpg)
NSTabViewControllerContainment
@property (copy) NSArray *tabViewItems; @property NSInteger selectedTabViewItemIndex; !
- (void)addTabViewItem:(NSTabViewItem *)tabViewItem; - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem atIndex:(NSInteger)index; - (void)removeTabViewItem:(NSTabViewItem *)tabViewItem; !
- (NSTabViewItem *)tabViewItemForViewController:(NSViewController *)vc; !
@interface NSTabViewItem + (instancetype)tabViewItemWithViewController:(NSViewController *)vc;
NSTabViewItem NSTabViewItem
![Page 85: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/85.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
![Page 86: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/86.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
![Page 87: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/87.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
NSTabViewControllerTabStyleSegmentedControlOnTop NSTabViewControllerTabStyleSegmentedControlOnBottom NSTabViewControllerTabStyleToolbar NSTabViewControllerTabStyleUnspecified
![Page 88: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/88.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
![Page 89: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/89.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
![Page 90: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/90.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
![Page 91: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/91.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
NSViewControllerTransitionNone NSViewControllerTransitionCrossfade !
NSViewControllerTransitionSlideUp NSViewControllerTransitionSlideDown NSViewControllerTransitionSlideLeft NSViewControllerTransitionSlideRight NSViewControllerTransitionSlideForward NSViewControllerTransitionSlideBackward
![Page 92: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/92.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
![Page 93: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/93.jpg)
NSTabViewControllerProperties
@property NSTabViewControllerTabStyle tabStyle; @property (strong) NSSegmentedControl *segmentedControl; @property NSViewControllerTransitionOptions transitionOptions; @property (strong) NSTabView *tabView;
![Page 94: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/94.jpg)
NSTabViewControllerNSToolbarDelegate
- (NSToolbarItem *)toolbar:(NSToolbar *)tb itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag NS_REQUIRES_SUPER; !
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)tb NS_REQUIRES_SUPER; - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)tb NS_REQUIRES_SUPER; - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)tb NS_REQUIRES_SUPER;
![Page 95: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/95.jpg)
NSTabViewControllerNSToolbarDelegate
- (NSToolbarItem *)toolbar:(NSToolbar *)tb itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag NS_REQUIRES_SUPER; !
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)tb NS_REQUIRES_SUPER; - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)tb NS_REQUIRES_SUPER; - (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)tb NS_REQUIRES_SUPER;
![Page 96: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/96.jpg)
NSSplitViewController
![Page 97: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/97.jpg)
NSSplitViewController
Manages an NSSplitView
![Page 98: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/98.jpg)
NSSplitViewController
Manages an NSSplitView
Lazy loading of views
![Page 99: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/99.jpg)
NSSplitViewController
Manages an NSSplitView
Lazy loading of views
Requires Auto Layout
![Page 100: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/100.jpg)
NSSplitViewControllerContainment
NSSplitView
view view
![Page 101: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/101.jpg)
NSSplitViewControllerContainment
view view
NSSplitView
![Page 102: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/102.jpg)
NSSplitViewControllerContainment
view view
NSSplitViewController
NSSplitViewItem NSSplitViewItem
NSViewController NSViewController
NSSplitView
![Page 103: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/103.jpg)
Properties of NSSplitViewItem !
!
!
!
!
!
@property (getter=isCollapsed) BOOL collapsed; @property BOOL canCollapse; @property NSLayoutPriority holdingPriority; @property (strong) NSViewController *viewController; + (instancetype)splitViewItemWithViewController:(NSViewController *)vc;
NSSplitViewControllerContainment
NSSplitViewController
view view
NSSplitViewItem NSSplitViewItem
NSViewController NSViewController
NSSplitView
![Page 104: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/104.jpg)
Properties of NSSplitViewItem !
!
!
!
!
!
@property (getter=isCollapsed) BOOL collapsed; @property BOOL canCollapse; @property NSLayoutPriority holdingPriority; @property (strong) NSViewController *viewController; + (instancetype)splitViewItemWithViewController:(NSViewController *)vc;
[[splitViewItem animator] setCollapse:YES]
NSSplitViewControllerContainment
NSSplitViewController
view view
NSSplitViewItem NSSplitViewItem
NSViewController NSViewController
NSSplitView
![Page 105: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/105.jpg)
NSSplitViewControllerContainment
@property (copy) NSArray *splitViewItems; !
- (void)addSplitViewItem:(NSSplitViewItem *)splitViewItem; - (void)insertSplitViewItem:(NSSplitViewItem *)splitViewItem atIndex:(NSInteger)index; - (void)removeSplitViewItem:(NSSplitViewItem *)splitViewItem; !
- (NSSplitViewItem *)splitViewItemForViewController:(NSViewController *)vc;
NSSplitViewItem NSSplitViewItem
![Page 106: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/106.jpg)
NSSplitViewControllerContainment
@property (copy) NSArray *splitViewItems; !
- (void)addSplitViewItem:(NSSplitViewItem *)splitViewItem; - (void)insertSplitViewItem:(NSSplitViewItem *)splitViewItem atIndex:(NSInteger)index; - (void)removeSplitViewItem:(NSSplitViewItem *)splitViewItem; !
- (NSSplitViewItem *)splitViewItemForViewController:(NSViewController *)vc;
NSSplitViewItem NSSplitViewItem
![Page 107: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/107.jpg)
NSSplitViewControllerContainment
@property (copy) NSArray *splitViewItems; !
- (void)addSplitViewItem:(NSSplitViewItem *)splitViewItem; - (void)insertSplitViewItem:(NSSplitViewItem *)splitViewItem atIndex:(NSInteger)index; - (void)removeSplitViewItem:(NSSplitViewItem *)splitViewItem; !
- (NSSplitViewItem *)splitViewItemForViewController:(NSViewController *)vc;
NSSplitViewItem NSSplitViewItem
![Page 108: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/108.jpg)
NSSplitViewControllerContainment
@property (copy) NSArray *splitViewItems; !
- (void)addSplitViewItem:(NSSplitViewItem *)splitViewItem; - (void)insertSplitViewItem:(NSSplitViewItem *)splitViewItem atIndex:(NSInteger)index; - (void)removeSplitViewItem:(NSSplitViewItem *)splitViewItem; !
- (NSSplitViewItem *)splitViewItemForViewController:(NSViewController *)vc;
NSSplitViewItem NSSplitViewItem
![Page 109: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/109.jpg)
NSViewControllerContainment
NSViewController
NSTabViewController
NSSplitViewController
MyCollectionViewController
MyCollectionItem MyCollectionItem
NSViewController NSViewController
view view
![Page 110: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/110.jpg)
NSViewControllerContainment
@property (copy) NSArray *childViewControllers; - (void)addChildViewController:(NSViewController *)childViewController; - (void)insertChildViewController:(NSViewController *)childViewController atIndex:(NSInteger)index; - (void)removeChildViewControllerAtIndex:(NSInteger)index; !
@property (readonly) NSViewController *parentViewController; - (void)removeFromParentViewController;
NSViewController
NSViewController NSViewController NSViewController
![Page 111: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/111.jpg)
NSViewControllerContainment
@property (copy) NSArray *childViewControllers; - (void)addChildViewController:(NSViewController *)childViewController; - (void)insertChildViewController:(NSViewController *)childViewController atIndex:(NSInteger)index; - (void)removeChildViewControllerAtIndex:(NSInteger)index; !
@property (readonly) NSViewController *parentViewController; - (void)removeFromParentViewController;
NSViewController
NSViewController NSViewController NSViewController
![Page 112: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/112.jpg)
NSViewControllerContainment
@property (copy) NSArray *childViewControllers; - (void)addChildViewController:(NSViewController *)childViewController; - (void)insertChildViewController:(NSViewController *)childViewController atIndex:(NSInteger)index; - (void)removeChildViewControllerAtIndex:(NSInteger)index; !
@property (readonly) NSViewController *parentViewController; - (void)removeFromParentViewController;
NSViewController
NSViewController NSViewController NSViewController
![Page 113: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/113.jpg)
NSViewControllerContainment
@property (copy) NSArray *childViewControllers; - (void)addChildViewController:(NSViewController *)childViewController; - (void)insertChildViewController:(NSViewController *)childViewController atIndex:(NSInteger)index; - (void)removeChildViewControllerAtIndex:(NSInteger)index; !
@property (readonly) NSViewController *parentViewController; - (void)removeFromParentViewController;
NSViewController
NSViewController NSViewController NSViewController
![Page 114: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/114.jpg)
NSViewControllerContainment
- (void)transitionFromViewController:(NSViewController *)fromViewController toViewController:(NSViewController *)toViewController options:(NSViewControllerTransitionOptions)options completionHandler:(void (^)(void))completion;
![Page 115: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/115.jpg)
NSViewControllerContainment
- (void)transitionFromViewController:(NSViewController *)fromViewController toViewController:(NSViewController *)toViewController options:(NSViewControllerTransitionOptions)options completionHandler:(void (^)(void))completion;
NSViewControllerTransitionNone NSViewControllerTransitionCrossfade !
NSViewControllerTransitionSlideUp NSViewControllerTransitionSlideDown NSViewControllerTransitionSlideLeft NSViewControllerTransitionSlideRight NSViewControllerTransitionSlideForward NSViewControllerTransitionSlideBackward
![Page 116: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/116.jpg)
NSViewControllerContainment
- (void)transitionFromViewController:(NSViewController *)fromViewController toViewController:(NSViewController *)toViewController options:(NSViewControllerTransitionOptions)options completionHandler:(void (^)(void))completion;
![Page 117: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/117.jpg)
NSViewControllerContainment
NSViewController
NSTabViewController
NSSplitViewController
MyCollectionViewController
MyCollectionItem MyCollectionItem
NSViewController NSViewController
view view
![Page 118: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/118.jpg)
NSViewController
Loading and layout
Containers
Triggered segues
Manual presentation
!
![Page 119: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/119.jpg)
NSViewController
Presentation
Triggered segues
![Page 120: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/120.jpg)
NSViewController
Presentation
• Identifier
Triggered segues
![Page 121: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/121.jpg)
NSViewController
Presentation
• Identifier
• Source view controller
Triggered segues
![Page 122: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/122.jpg)
NSViewController
Presentation
• Identifier
• Source view controller
• Destination controller
Triggered segues
![Page 123: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/123.jpg)
NSViewController
Presentation
• Identifier
• Source view controller
• Destination controller
• Style
Triggered segues
![Page 124: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/124.jpg)
NSViewController
Presentation
• Identifier
• Source view controller
• Destination controller
• Style
• Other attributes
Triggered segues
![Page 125: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/125.jpg)
NSViewControllerTriggered segues
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender;
!
![Page 126: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/126.jpg)
NSViewControllerTriggered segues
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender; !
@interface NSStoryboardSegue @property (readonly, copy) NSString *identifier; @property (readonly, strong) id sourceController; @property (readonly, strong) id destinationController;
![Page 127: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/127.jpg)
NSViewControllerTriggered segues
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender; !
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender;
![Page 128: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/128.jpg)
NSViewControllerTriggered segues
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender; !
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender; !
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender;
![Page 129: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/129.jpg)
NSViewControllerTriggered segues
![Page 130: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/130.jpg)
NSViewControllerTriggered segues
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender;
![Page 131: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/131.jpg)
NSViewControllerManual presentation
![Page 132: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/132.jpg)
NSViewControllerManual presentation
- (void)presentViewControllerAsSheet:(NSViewController *)vc; !
- (void)presentViewControllerAsModalWindow:(NSViewController *)vc; !
- (void)presentViewController:(NSViewController *)vc asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior; !
- (IBAction)dismissController:(id)sender;
![Page 133: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/133.jpg)
NSViewControllerManual presentation
- (void)presentViewControllerAsSheet:(NSViewController *)vc; !
- (void)presentViewControllerAsModalWindow:(NSViewController *)vc; !
- (void)presentViewController:(NSViewController *)vc asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior; !
- (IBAction)dismissController:(id)sender;
![Page 134: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/134.jpg)
NSViewControllerManual presentation
- (void)presentViewControllerAsSheet:(NSViewController *)vc; !
- (void)presentViewControllerAsModalWindow:(NSViewController *)vc; !
- (void)presentViewController:(NSViewController *)vc asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior; !
- (IBAction)dismissController:(id)sender;
![Page 135: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/135.jpg)
NSViewControllerManual presentation
- (void)presentViewControllerAsSheet:(NSViewController *)vc; !
- (void)presentViewControllerAsModalWindow:(NSViewController *)vc; !
- (void)presentViewController:(NSViewController *)vc asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior; !
- (IBAction)dismissController:(id)sender;
![Page 136: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/136.jpg)
NSViewControllerManual presentation
- (void)presentViewControllerAsSheet:(NSViewController *)vc; !
- (void)presentViewControllerAsModalWindow:(NSViewController *)vc; !
- (void)presentViewController:(NSViewController *)vc asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior; !
- (IBAction)dismissController:(id)sender;
![Page 137: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/137.jpg)
NSViewControllerManual presentation
- (void)presentViewController:(NSViewController *)viewController animator:(id <NSViewControllerPresentationAnimator>)animator;
![Page 138: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/138.jpg)
NSViewControllerManual presentation
- (void)presentViewController:(NSViewController *)viewController animator:(id <NSViewControllerPresentationAnimator>)animator;
![Page 139: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/139.jpg)
NSViewControllerManual presentation
- (void)presentViewController:(NSViewController *)viewController animator:(id <NSViewControllerPresentationAnimator>)animator; !
@protocol - (void)animatePresentationOfViewController:(NSViewController *)vc fromViewController:(NSViewController *)fromViewController; !
- (void)animateDismissalOfViewController:(NSViewController *)vc fromViewController:(NSViewController *)fromViewController;
![Page 140: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/140.jpg)
APILooking under the hood
Storyboards
View controllers
Window controllers
Gesture recognizers
![Page 141: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/141.jpg)
NSWindowController
!
![Page 142: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/142.jpg)
NSWindowController
@property (strong) NSViewController *contentViewController; @property(readonly, strong) NSStoryboard *storyboard; - (IBAction)dismissController:(id)sender;
![Page 143: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/143.jpg)
NSWindowController
@property (strong) NSViewController *contentViewController; @property(readonly, strong) NSStoryboard *storyboard; - (IBAction)dismissController:(id)sender;
![Page 144: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/144.jpg)
NSWindowController
@property (strong) NSViewController *contentViewController; @property(readonly, strong) NSStoryboard *storyboard; - (IBAction)dismissController:(id)sender;
![Page 145: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/145.jpg)
NSWindowController
@property (strong) NSViewController *contentViewController; @property(readonly, strong) NSStoryboard *storyboard; - (IBAction)dismissController:(id)sender;
![Page 146: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/146.jpg)
NSWindowController
@property (strong) NSViewController *contentViewController; @property(readonly, strong) NSStoryboard *storyboard; - (IBAction)dismissController:(id)sender; !
- (void)prepareForSegue:(NSStoryboardSegue *)segue sender:(id)sender; - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender; - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender;
![Page 147: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/147.jpg)
NSWindowController
Manage window
![Page 148: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/148.jpg)
NSWindowController
Manage window
Manage titlebar and toolbar
![Page 149: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/149.jpg)
NSWindowController
Manage window
Manage titlebar and toolbar
Manage the contentViewController
![Page 150: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/150.jpg)
APILooking under the hood
Storyboards
View controllers
Window controllers
Gesture recognizers
![Page 151: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/151.jpg)
NSGestureRecognizer
![Page 152: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/152.jpg)
NSGestureRecognizer
Most gestures are determined by hardware (but not all)
![Page 153: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/153.jpg)
NSGestureRecognizer
Most gestures are determined by hardware (but not all)
Disambiguating user input
![Page 154: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/154.jpg)
NSGestureRecognizer
Most gestures are determined by hardware (but not all)
Disambiguating user input
- (void)mouseDown:(NSEvent *)downEvent { CGFloat doubleClickTime = [NSEvent doubleClickInterval]; NSEventMask eventMask = NSLeftMouseDraggedMask | NSLeftMouseUpMask; // Is this a singe, double or triple click? Or long click, or a drag? NSEvent *nextEvent = [NSApp nextEventMatchingMask:eventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]; if (nextEvent) { // could be an up or a drag if (nextEvent.type == NSLeftMouseUp) { // got at least a single click, make sure it's not performing a double click if ( (nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseDownMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { // start of a double (or triple) click if ( (nextEvent = [NSApp nextEventMatchingMask:eventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { if (nextEvent.type == NSLeftMouseUp) { // got at least a double click, make sure user is not performing a triple click if ( (nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseDownMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { // start of a triple click? if ( (nextEvent = [NSApp nextEventMatchingMask:eventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { if (nextEvent.type == NSLeftMouseUp) { // triple click! This is as far as we care about [self handleTripleClick]; } else { // double click and drag. That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // double click and a half. That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // double click! [self handleDoubleClick]; } } else { // tap and a drag, That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // tap and a half. That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // This is a single click. This view doesn't care about single clicks, but perhaps the superview cares. [NSApp postEvent:nextEvent atStart:YES]; [super mouseDown:downEvent]; } } else { [NSApp postEvent:nextEvent atStart:YES]; [self handleMouseDragWithEvent:downEvent]; } } else { // a long single click [self handleLongClick]; // eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } }
![Page 155: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/155.jpg)
NSGestureRecognizer
Most gestures are determined by hardware (but not all)
Disambiguating user input
- (void)mouseDown:(NSEvent *)downEvent { CGFloat doubleClickTime = [NSEvent doubleClickInterval]; NSEventMask eventMask = NSLeftMouseDraggedMask | NSLeftMouseUpMask; // Is this a singe, double or triple click? Or long click, or a drag? NSEvent *nextEvent = [NSApp nextEventMatchingMask:eventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]; if (nextEvent) { // could be an up or a drag if (nextEvent.type == NSLeftMouseUp) { // got at least a single click, make sure it's not performing a double click if ( (nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseDownMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { // start of a double (or triple) click if ( (nextEvent = [NSApp nextEventMatchingMask:eventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { if (nextEvent.type == NSLeftMouseUp) { // got at least a double click, make sure user is not performing a triple click if ( (nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseDownMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { // start of a triple click? if ( (nextEvent = [NSApp nextEventMatchingMask:eventMask untilDate:[NSDate dateWithTimeIntervalSinceNow:doubleClickTime] inMode:NSEventTrackingRunLoopMode dequeue:YES]) ) { if (nextEvent.type == NSLeftMouseUp) { // triple click! This is as far as we care about [self handleTripleClick]; } else { // double click and drag. That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // double click and a half. That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // double click! [self handleDoubleClick]; } } else { // tap and a drag, That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // tap and a half. That means nothing to us. Eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } } else { // This is a single click. This view doesn't care about single clicks, but perhaps the superview cares. [NSApp postEvent:nextEvent atStart:YES]; [super mouseDown:downEvent]; } } else { [NSApp postEvent:nextEvent atStart:YES]; [self handleMouseDragWithEvent:downEvent]; } } else { // a long single click [self handleLongClick]; // eat all events until we get a mouse up nextEvent = [NSApp nextEventMatchingMask:NSLeftMouseUp untilDate:nil inMode:NSEventTrackingRunLoopMode dequeue:YES]; [NSApp discardEventsMatchingMask:NSAnyEventMask beforeEvent:nextEvent]; } }
![Page 156: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/156.jpg)
NSGestureRecognizer
Most gestures are determined by hardware (but not all)
Disambiguating user input
![Page 157: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/157.jpg)
NSGestureRecognizer
Most gestures are determined by hardware (but not all)
Disambiguating user input
Good fit for view controllers (target of action)
![Page 158: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/158.jpg)
NSGestureRecognizer
NSGestureRecognizer *gr = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(magnify:)]; [self.view addGestureRecognizer:gr]; gr.delegate = self; !
- (void)magnify:(NSClickGestureRecognizer*)gr { switch (gr.state) { case NSGestureRecognizerStateBegan: … case NSGestureRecognizerStateChanged: … case NSGestureRecognizerStateEnded: … case NSGestureRecognizerStateCancelled: … }}
![Page 159: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/159.jpg)
NSGestureRecognizer
NSGestureRecognizer *gr = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(magnify:)]; [self.view addGestureRecognizer:gr]; gr.delegate = self; !
- (void)magnify:(NSClickGestureRecognizer*)gr { switch (gr.state) { case NSGestureRecognizerStateBegan: … case NSGestureRecognizerStateChanged: … case NSGestureRecognizerStateEnded: … case NSGestureRecognizerStateCancelled: … }}
![Page 160: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/160.jpg)
NSGestureRecognizer
NSGestureRecognizer *gr = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(magnify:)]; [self.view addGestureRecognizer:gr]; gr.delegate = self; !
- (void)magnify:(NSClickGestureRecognizer*)gr { switch (gr.state) { case NSGestureRecognizerStateBegan: … case NSGestureRecognizerStateChanged: … case NSGestureRecognizerStateEnded: … case NSGestureRecognizerStateCancelled: … }}
![Page 161: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/161.jpg)
NSGestureRecognizer
NSGestureRecognizer *gr = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(magnify:)]; [self.view addGestureRecognizer:gr]; gr.delegate = self; !
- (void)magnify:(NSClickGestureRecognizer*)gr { switch (gr.state) { case NSGestureRecognizerStateBegan: … case NSGestureRecognizerStateChanged: … case NSGestureRecognizerStateEnded: … case NSGestureRecognizerStateCancelled: … }}
![Page 162: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/162.jpg)
NSGestureRecognizer
NSGestureRecognizer *gr = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(magnify:)]; [self.view addGestureRecognizer:gr]; gr.delegate = self; !
- (void)magnify:(NSClickGestureRecognizer*)gr { switch (gr.state) { case NSGestureRecognizerStateBegan: … case NSGestureRecognizerStateChanged: … case NSGestureRecognizerStateEnded: … case NSGestureRecognizerStateCancelled: … }}
![Page 163: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/163.jpg)
NSGestureRecognizer
NSGestureRecognizer *gr = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(magnify:)]; [self.view addGestureRecognizer:gr]; gr.delegate = self; !
- (void)magnify:(NSClickGestureRecognizer*)gr { switch (gr.state) { case NSGestureRecognizerStateBegan: … case NSGestureRecognizerStateChanged: … case NSGestureRecognizerStateEnded: … case NSGestureRecognizerStateCancelled: … }}
![Page 164: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/164.jpg)
NSGestureRecognizer
NSGestureRecognizer *gr = [[NSMagnificationGestureRecognizer alloc] initWithTarget:self action:@selector(magnify:)]; [self.view addGestureRecognizer:gr]; gr.delegate = self; !
- (void)magnify:(NSClickGestureRecognizer*)gr { switch (gr.state) { case NSGestureRecognizerStateBegan: … case NSGestureRecognizerStateChanged: … case NSGestureRecognizerStateEnded: … case NSGestureRecognizerStateCancelled: … }}
![Page 165: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/165.jpg)
NSGestureRecognizer
NSClickGestureRecognizer
NSPanGestureRecognizer
NSPressGestureRecognizer
NSMagnificationGestureRecognizer
NSRotationGestureRecognizer
![Page 166: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/166.jpg)
NSGestureRecognizer
NSClickGestureRecognizer
NSPanGestureRecognizer
NSPressGestureRecognizer
NSMagnificationGestureRecognizer
NSRotationGestureRecognizer
![Page 167: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/167.jpg)
NSGestureRecognizer
NSClickGestureRecognizer
NSPanGestureRecognizer
NSPressGestureRecognizer
NSMagnificationGestureRecognizer
NSRotationGestureRecognizer
![Page 168: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/168.jpg)
NSGestureRecognizer
NSClickGestureRecognizer
NSPanGestureRecognizer
NSPressGestureRecognizer
NSMagnificationGestureRecognizer
NSRotationGestureRecognizer
![Page 169: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/169.jpg)
NSGestureRecognizer
NSClickGestureRecognizer
NSPanGestureRecognizer
NSPressGestureRecognizer
NSMagnificationGestureRecognizer
NSRotationGestureRecognizer
![Page 170: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/170.jpg)
NSGestureRecognizerEvent flow
NSView -mouseDown:
NSApplication -sendEvent:
NSWindow -sendEvent:
Responder ChainEvent Observers
Mouse press
![Page 171: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/171.jpg)
NSGestureRecognizerEvent flow
NSView -mouseDown:
NSApplication -sendEvent:
NSWindow -sendEvent:
Responder ChainEvent Observers
Mouse press
Gesture Recognizers
![Page 172: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/172.jpg)
NSGestureRecognizerFor subclassers
See NSGestureRecognizer (NSSubclassUse)
![Page 173: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/173.jpg)
DemoView controllers and gesture recognizers
Raleigh Ledet AppKit Engineer
![Page 174: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/174.jpg)
SummaryLooking under the hood
Storyboards
View controllers
Window controllers
Gesture recognizers
![Page 175: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/175.jpg)
More Information
Jake Behrens App Frameworks Evangelist [email protected]
Documentation What’s New in OS X http://developer.apple.com/
Apple Developer Forums http://devforums.apple.com
![Page 176: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/176.jpg)
Related Sessions
• Adapting Your App to the New UI of OS X Yosemite
Pacific Heights Tuesday 3:15PM
• Adopting Advanced Features of the New UI of OS X Yosemite
Marina Wednesday 2:00PM
• What's New in Interface Builder Mission Wednesday 3:15PM
• Creating Modern Cocoa Apps Marina Thursday 10:15AM
![Page 177: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/177.jpg)
• Interface Builder and Live Views Lab Tools Lab C Wednesday 9:00AM
• New UI and Cocoa Lab Frameworks Lab B Wednesday 3:15PM
• Xcode and Interface Builder Lab Tools Lab C Thursday 9:00AM
• View Controllers and Cocoa Lab Frameworks Lab B Thursday 11:30AM
• Cocoa Lab Frameworks Lab B Thursday 4:30PM
• Interface Builder and Auto Layout Lab Tools Lab C Friday 9:00AM
Labs
![Page 178: Storyboards and Controllers on OS X - Apple Inc.€¦ · Storyboards and Controllers on OS X Contain yourself Session 212 Mike Swingler Interface Builder Engineer Frameworks! Raleigh](https://reader035.vdocuments.net/reader035/viewer/2022070211/5f06e2f07e708231d41a3993/html5/thumbnails/178.jpg)