├── NSViewControllerPresentations
├── NSViewControllerPresentations-Bridging-Header.h
├── MyView.h
├── MyViewController.h
├── ViewController.h
├── MyCustomSegue.h
├── main.m
├── AppDelegate.h
├── MyCustomAnimator.h
├── AppDelegate.m
├── MyCustomSwiftSegue.swift
├── MyView.m
├── MyViewController.m
├── MyCustomSegue.m
├── Images.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── Info.plist
├── ViewController.m
├── MyCustomSwiftAnimator.swift
├── MyViewController.xib
├── MyCustomAnimator.m
└── Base.lproj
│ └── Main.storyboard
├── NSViewControllerPresentations.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── project.pbxproj
├── .gitignore
├── LICENSE
└── README.md
/NSViewControllerPresentations/NSViewControllerPresentations-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 | #import "MyCustomAnimator.h"
5 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyView.h:
--------------------------------------------------------------------------------
1 | //
2 | // MyView.h
3 | // NSViewControllerPresentations
4 | //
5 | // Created by jonathan on 24/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MyView : NSView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MyViewController.h
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MyViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : NSViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyCustomSegue.h:
--------------------------------------------------------------------------------
1 | //
2 | // MyCustomSegue.h
3 | // NSViewControllerPresentations
4 | //
5 | // Created by jonathan on 25/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface MyCustomSegue : NSStoryboardSegue
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[]) {
12 | return NSApplicationMain(argc, argv);
13 | }
14 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : NSObject
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyCustomAnimator.h:
--------------------------------------------------------------------------------
1 | //
2 | // MyCustomAnimator.h
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import
10 | @import AppKit;
11 |
12 | @interface MyCustomAnimator : NSObject
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | build/
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | *.xccheckout
14 | *.moved-aside
15 | DerivedData
16 | *.hmap
17 | *.ipa
18 | *.xcuserstate
19 |
20 | # CocoaPods
21 | #
22 | # We recommend against adding the Pods directory to your .gitignore. However
23 | # you should judge for yourself, the pros and cons are mentioned at:
24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
25 | #
26 | # Pods/
27 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
18 | // Insert code here to initialize your application
19 | }
20 |
21 | - (void)applicationWillTerminate:(NSNotification *)aNotification {
22 | // Insert code here to tear down your application
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyCustomSwiftSegue.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyCustomSwiftSegue.swift
3 | // NSViewControllerPresentations
4 | //
5 | // Created by jonathan on 25/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | class MyCustomSwiftSegue: NSStoryboardSegue {
12 |
13 | override func perform() {
14 | let animator = MyCustomSwiftAnimator()
15 | let sourceVC = self.sourceController as! NSViewController
16 | let destVC = self.destinationController as! NSViewController
17 | sourceVC.present(destVC, animator: animator)
18 | }
19 |
20 | }
21 |
22 |
23 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyView.m:
--------------------------------------------------------------------------------
1 | //
2 | // MyView.m
3 | // NSViewControllerPresentations
4 | //
5 | // Created by jonathan on 24/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import "MyView.h"
10 |
11 | @implementation MyView
12 | /*
13 | These click-blockers are required for the custom presented
14 | NSViewController's view, as it does not have it's own backing
15 | window. Without them, clicks are picked up by the buttons
16 | on the presentingViewControllers' view
17 |
18 | */
19 | - (void) mouseDown:(NSEvent*)event {}
20 | - (void) mouseDragged:(NSEvent*)event {}
21 | - (void) mouseUp:(NSEvent*)event {}
22 | @end
23 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // MyViewController.m
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import "MyViewController.h"
10 |
11 | @interface MyViewController ()
12 |
13 | @end
14 |
15 | @implementation MyViewController
16 |
17 | - (void)viewDidLoad {
18 | [super viewDidLoad];
19 | self.title = @"Presented ViewController";
20 | }
21 |
22 |
23 | - (IBAction)dismiss:(id)sender {
24 | if (self.presentingViewController) {
25 | [self.presentingViewController dismissViewController:self];
26 | } else {
27 | //for the 'show' transition
28 | [self.view.window close];
29 | }
30 | }
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyCustomSegue.m:
--------------------------------------------------------------------------------
1 | //
2 | // MyCustomSegue.m
3 | // NSViewControllerPresentations
4 | //
5 | // Created by jonathan on 25/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import "MyCustomSegue.h"
10 | #import "MyCustomAnimator.h"
11 | #import "NSViewControllerPresentations-Swift.h"
12 |
13 | @implementation MyCustomSegue
14 |
15 | - (void)perform {
16 | //Objective-C and Swift versions of animator both work
17 | //id animator1 = [[MyCustomAnimator alloc] init];
18 |
19 | id animator2 = [[MyCustomSwiftAnimator alloc] init];
20 | [self.sourceController presentViewController:self.destinationController
21 | animator:animator2];
22 | }
23 | @end
24 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 foundry
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "size" : "32x32",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "size" : "128x128",
26 | "scale" : "1x"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "size" : "256x256",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "size" : "256x256",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "size" : "512x512",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "size" : "512x512",
51 | "scale" : "2x"
52 | }
53 | ],
54 | "info" : {
55 | "version" : 1,
56 | "author" : "xcode"
57 | }
58 | }
--------------------------------------------------------------------------------
/NSViewControllerPresentations/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSMinimumSystemVersion
26 | $(MACOSX_DEPLOYMENT_TARGET)
27 | NSHumanReadableCopyright
28 | Copyright © 2015 net.ellipsis. All rights reserved.
29 | NSMainStoryboardFile
30 | Main
31 | NSPrincipalClass
32 | NSApplication
33 |
34 |
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # NSViewControllerPresentation
2 |
3 | A small demo of NSViewController's present and dismiss methods, including custom `NSViewControllerPresentationAnimator` object
4 |
5 | Examples provided for the following methods:
6 |
7 | – presentViewController:asPopoverRelativeToRect:ofView:preferredEdge:behavior:
8 | – presentViewControllerAsModalWindow:
9 | – presentViewControllerAsSheet:
10 | – presentViewController:animator:
11 |
12 | For comparison, behaviour is also be provided using NSStoryboardSegues:
13 | "Popover", "Sheet" and "Modal" are built-in segues corresponding to the respective `presentViewController:` methods
14 | "Custom" segue is similar to `presentViewController:animator` and expects a custom `NSStoryboardSegue` and custom animator object.
15 | "Show" segue launches an NSViewController in a new window with no return-relationship (i.e. no presenting/presented relationship)
16 |
17 | For the animator/custom example, a custom `NSStoryboardSegue` subclass is provided, alongside a custom object conforming to the `NSViewControllerPresentationAnimator` protocol.
18 |
19 | These are shown in Objective-C and Swift versions for comparison. ~~Check the comment in `MyCustomSwiftSegue` - there's a Swift-only _gotcha_ waiting to trip you up~~ (see also this [Stack Overflow question]( http://stackoverflow.com/questions/26876609/nsstoryboardsegue-sample-code-yosemite-storyboard?lq=1 question)).
20 |
21 |
22 | 
23 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "MyViewController.h"
11 | #import "MyCustomAnimator.h"
12 | #import "NSViewControllerPresentations-Swift.h"
13 |
14 | @implementation ViewController
15 |
16 | - (void)viewDidLoad {
17 | [super viewDidLoad];
18 | self.title = @"Presenting ViewController";
19 | }
20 |
21 | - (IBAction)presentAsPopover:(NSButton *)sender {
22 | NSViewController* vc = [[MyViewController alloc] initWithNibName:nil bundle:nil];
23 | [self presentViewController:vc
24 | asPopoverRelativeToRect:sender.frame
25 | ofView:self.view
26 | preferredEdge:NSMinYEdge
27 | behavior:NSPopoverBehaviorTransient];
28 |
29 | }
30 | - (IBAction)presentAsSheet:(NSButton *)sender {
31 | NSViewController* vc = [[MyViewController alloc] initWithNibName:nil bundle:nil];
32 | [self presentViewControllerAsSheet:vc];
33 |
34 | }
35 | - (IBAction)presentAsModal:(NSButton *)sender {
36 | NSViewController* vc = [[MyViewController alloc] initWithNibName:nil bundle:nil];
37 | [self presentViewControllerAsModalWindow:vc];
38 |
39 | }
40 | - (IBAction)presentWithAnimator:(NSButton *)sender {
41 | id animator = [[MyCustomAnimator alloc] init];
42 | NSViewController* vc = [[MyViewController alloc] initWithNibName:nil bundle:nil];
43 | [self presentViewController:vc animator:animator];
44 |
45 | }
46 |
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyCustomSwiftAnimator.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MyCustomSwiftAnimator.swift
3 | // NSViewControllerPresentations
4 | //
5 | // Created by jonathan on 25/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 | //
8 | // based on:
9 | // http://stackoverflow.com/questions/26715636/animate-custom-presentation-of-viewcontroller-in-os-x-yosemite
10 |
11 | import Cocoa
12 |
13 | class MyCustomSwiftAnimator: NSObject, NSViewControllerPresentationAnimator {
14 |
15 | func animatePresentation(of viewController: NSViewController, from fromViewController: NSViewController) {
16 | let bottomVC = fromViewController
17 | let topVC = viewController
18 | topVC.view.wantsLayer = true
19 | topVC.view.layerContentsRedrawPolicy = .onSetNeedsDisplay
20 | topVC.view.alphaValue = 0
21 | bottomVC.view.addSubview(topVC.view)
22 | var frame : CGRect = NSRectToCGRect(bottomVC.view.frame)
23 | frame = frame.insetBy(dx: 40, dy: 40)
24 | topVC.view.frame = NSRectFromCGRect(frame)
25 | let color: CGColor = NSColor.gray.cgColor
26 | topVC.view.layer?.backgroundColor = color
27 | NSAnimationContext.runAnimationGroup({ (context) -> Void in
28 | context.duration = 0.5
29 | topVC.view.animator().alphaValue = 0.8
30 |
31 | }, completionHandler: nil)
32 |
33 | }
34 |
35 |
36 | func animateDismissal(of viewController: NSViewController, from fromViewController: NSViewController) {
37 | let topVC = viewController
38 | topVC.view.wantsLayer = true
39 | topVC.view.layerContentsRedrawPolicy = .onSetNeedsDisplay
40 |
41 | NSAnimationContext.runAnimationGroup({ (context) -> Void in
42 | context.duration = 0.5
43 | topVC.view.animator().alphaValue = 0
44 | }, completionHandler: {
45 | topVC.view.removeFromSuperview()
46 | })
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/MyCustomAnimator.m:
--------------------------------------------------------------------------------
1 | //
2 | // MyCustomAnimator.m
3 | // TestOSXApp
4 | //
5 | // Created by jonathan on 22/01/2015.
6 | // Copyright (c) 2015 net.ellipsis. All rights reserved.
7 |
8 | // translated from this Swift example
9 | // http://stackoverflow.com/questions/26715636/animate-custom-presentation-of-viewcontroller-in-os-x-yosemite
10 |
11 | #import "MyCustomAnimator.h"
12 |
13 | @implementation MyCustomAnimator
14 |
15 | - (void)animatePresentationOfViewController:(NSViewController *)viewController fromViewController:(NSViewController *)fromViewController {
16 |
17 | NSViewController* bottomVC = fromViewController;
18 | NSViewController* topVC = viewController;
19 |
20 | // make sure the view has a CA layer for smooth animation
21 | topVC.view.wantsLayer = YES;
22 |
23 | // set redraw policy
24 | topVC.view.layerContentsRedrawPolicy = NSViewLayerContentsRedrawOnSetNeedsDisplay;
25 |
26 | // start out invisible
27 | topVC.view.alphaValue = 0;
28 |
29 | // add view of presented viewcontroller
30 | [bottomVC.view addSubview:topVC.view];
31 |
32 |
33 | // adjust size and colour
34 | CGRect frame = NSRectToCGRect(bottomVC.view.frame);
35 | frame = CGRectInset(frame, 40, 40);
36 | [topVC.view setFrame:NSRectFromCGRect(frame)];
37 | topVC.view.layer.backgroundColor = [NSColor grayColor].CGColor;
38 |
39 | // Do some CoreAnimation stuff to present view
40 | [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
41 | context.duration = 0.5;
42 | topVC.view.animator.alphaValue = 0.8;
43 | } completionHandler:nil];
44 |
45 | }
46 |
47 | - (void)animateDismissalOfViewController:(NSViewController *)viewController fromViewController:(NSViewController *)fromViewController {
48 |
49 | //NSViewController* bottomVC = fromViewController;
50 | NSViewController* topVC = viewController;
51 |
52 | // make sure the view has a CA layer for smooth animation
53 | topVC.view.wantsLayer = YES;
54 |
55 | // set redraw policy
56 | topVC.view.layerContentsRedrawPolicy = NSViewLayerContentsRedrawOnSetNeedsDisplay;
57 |
58 | // Do some CoreAnimation stuff to present view
59 | [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
60 | context.duration = 0.5;
61 | topVC.view.animator.alphaValue = 0;
62 | } completionHandler:^{
63 | [topVC.view removeFromSuperview];
64 | }];
65 |
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | AB8965801A7567DB00FF9F1E /* MyCustomSegue.m in Sources */ = {isa = PBXBuildFile; fileRef = AB89657F1A7567DB00FF9F1E /* MyCustomSegue.m */; };
11 | AB8965831A75683C00FF9F1E /* MyCustomSwiftSegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB8965821A75683C00FF9F1E /* MyCustomSwiftSegue.swift */; };
12 | AB8965851A7568F100FF9F1E /* MyCustomSwiftAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB8965841A7568F100FF9F1E /* MyCustomSwiftAnimator.swift */; };
13 | AB937ECA1A7429BE00C8391F /* MyView.m in Sources */ = {isa = PBXBuildFile; fileRef = AB937EC91A7429BE00C8391F /* MyView.m */; };
14 | ABC8ACD81A71A31F00B10301 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC8ACD71A71A31F00B10301 /* AppDelegate.m */; };
15 | ABC8ACDA1A71A31F00B10301 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC8ACD91A71A31F00B10301 /* main.m */; };
16 | ABC8ACDD1A71A31F00B10301 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC8ACDC1A71A31F00B10301 /* ViewController.m */; };
17 | ABC8ACDF1A71A31F00B10301 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ABC8ACDE1A71A31F00B10301 /* Images.xcassets */; };
18 | ABC8ACE21A71A31F00B10301 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = ABC8ACE01A71A31F00B10301 /* Main.storyboard */; };
19 | ABC8ACFA1A71A44F00B10301 /* MyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC8ACF81A71A44F00B10301 /* MyViewController.m */; };
20 | ABC8ACFB1A71A44F00B10301 /* MyViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ABC8ACF91A71A44F00B10301 /* MyViewController.xib */; };
21 | ABC8ACFE1A71A99C00B10301 /* MyCustomAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = ABC8ACFD1A71A99C00B10301 /* MyCustomAnimator.m */; };
22 | /* End PBXBuildFile section */
23 |
24 | /* Begin PBXFileReference section */
25 | AB89657E1A7567DB00FF9F1E /* MyCustomSegue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyCustomSegue.h; sourceTree = ""; };
26 | AB89657F1A7567DB00FF9F1E /* MyCustomSegue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyCustomSegue.m; sourceTree = ""; };
27 | AB8965811A75683C00FF9F1E /* NSViewControllerPresentations-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSViewControllerPresentations-Bridging-Header.h"; sourceTree = ""; };
28 | AB8965821A75683C00FF9F1E /* MyCustomSwiftSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyCustomSwiftSegue.swift; sourceTree = ""; };
29 | AB8965841A7568F100FF9F1E /* MyCustomSwiftAnimator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyCustomSwiftAnimator.swift; sourceTree = ""; };
30 | AB937EC81A7429BE00C8391F /* MyView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyView.h; sourceTree = ""; };
31 | AB937EC91A7429BE00C8391F /* MyView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyView.m; sourceTree = ""; };
32 | ABC8ACD11A71A31F00B10301 /* NSViewControllerPresentations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NSViewControllerPresentations.app; sourceTree = BUILT_PRODUCTS_DIR; };
33 | ABC8ACD51A71A31F00B10301 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
34 | ABC8ACD61A71A31F00B10301 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
35 | ABC8ACD71A71A31F00B10301 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
36 | ABC8ACD91A71A31F00B10301 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
37 | ABC8ACDB1A71A31F00B10301 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; };
38 | ABC8ACDC1A71A31F00B10301 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; };
39 | ABC8ACDE1A71A31F00B10301 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
40 | ABC8ACE11A71A31F00B10301 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
41 | ABC8ACF71A71A44F00B10301 /* MyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyViewController.h; sourceTree = ""; };
42 | ABC8ACF81A71A44F00B10301 /* MyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyViewController.m; sourceTree = ""; };
43 | ABC8ACF91A71A44F00B10301 /* MyViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyViewController.xib; sourceTree = ""; };
44 | ABC8ACFC1A71A99C00B10301 /* MyCustomAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyCustomAnimator.h; sourceTree = ""; };
45 | ABC8ACFD1A71A99C00B10301 /* MyCustomAnimator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyCustomAnimator.m; sourceTree = ""; };
46 | /* End PBXFileReference section */
47 |
48 | /* Begin PBXFrameworksBuildPhase section */
49 | ABC8ACCE1A71A31F00B10301 /* Frameworks */ = {
50 | isa = PBXFrameworksBuildPhase;
51 | buildActionMask = 2147483647;
52 | files = (
53 | );
54 | runOnlyForDeploymentPostprocessing = 0;
55 | };
56 | /* End PBXFrameworksBuildPhase section */
57 |
58 | /* Begin PBXGroup section */
59 | AB89658C1A7582BA00FF9F1E /* ViewControllers */ = {
60 | isa = PBXGroup;
61 | children = (
62 | AB937EC81A7429BE00C8391F /* MyView.h */,
63 | AB937EC91A7429BE00C8391F /* MyView.m */,
64 | ABC8ACF71A71A44F00B10301 /* MyViewController.h */,
65 | ABC8ACF81A71A44F00B10301 /* MyViewController.m */,
66 | ABC8ACF91A71A44F00B10301 /* MyViewController.xib */,
67 | ABC8ACDB1A71A31F00B10301 /* ViewController.h */,
68 | ABC8ACDC1A71A31F00B10301 /* ViewController.m */,
69 | );
70 | name = ViewControllers;
71 | sourceTree = "";
72 | };
73 | AB89658D1A7582E100FF9F1E /* ObjC segues and animators */ = {
74 | isa = PBXGroup;
75 | children = (
76 | AB89657E1A7567DB00FF9F1E /* MyCustomSegue.h */,
77 | AB89657F1A7567DB00FF9F1E /* MyCustomSegue.m */,
78 | ABC8ACFC1A71A99C00B10301 /* MyCustomAnimator.h */,
79 | ABC8ACFD1A71A99C00B10301 /* MyCustomAnimator.m */,
80 | );
81 | name = "ObjC segues and animators";
82 | sourceTree = "";
83 | };
84 | AB89658E1A7582F000FF9F1E /* Swift segues and animators */ = {
85 | isa = PBXGroup;
86 | children = (
87 | AB8965821A75683C00FF9F1E /* MyCustomSwiftSegue.swift */,
88 | AB8965841A7568F100FF9F1E /* MyCustomSwiftAnimator.swift */,
89 | );
90 | name = "Swift segues and animators";
91 | sourceTree = "";
92 | };
93 | ABC8ACC81A71A31F00B10301 = {
94 | isa = PBXGroup;
95 | children = (
96 | ABC8ACD31A71A31F00B10301 /* NSViewControllerPresentations */,
97 | ABC8ACD21A71A31F00B10301 /* Products */,
98 | );
99 | sourceTree = "";
100 | };
101 | ABC8ACD21A71A31F00B10301 /* Products */ = {
102 | isa = PBXGroup;
103 | children = (
104 | ABC8ACD11A71A31F00B10301 /* NSViewControllerPresentations.app */,
105 | );
106 | name = Products;
107 | sourceTree = "";
108 | };
109 | ABC8ACD31A71A31F00B10301 /* NSViewControllerPresentations */ = {
110 | isa = PBXGroup;
111 | children = (
112 | AB89658E1A7582F000FF9F1E /* Swift segues and animators */,
113 | AB89658D1A7582E100FF9F1E /* ObjC segues and animators */,
114 | AB89658C1A7582BA00FF9F1E /* ViewControllers */,
115 | ABC8ACDE1A71A31F00B10301 /* Images.xcassets */,
116 | ABC8ACE01A71A31F00B10301 /* Main.storyboard */,
117 | ABC8ACD41A71A31F00B10301 /* Supporting Files */,
118 | );
119 | path = NSViewControllerPresentations;
120 | sourceTree = "";
121 | };
122 | ABC8ACD41A71A31F00B10301 /* Supporting Files */ = {
123 | isa = PBXGroup;
124 | children = (
125 | AB8965811A75683C00FF9F1E /* NSViewControllerPresentations-Bridging-Header.h */,
126 | ABC8ACD61A71A31F00B10301 /* AppDelegate.h */,
127 | ABC8ACD71A71A31F00B10301 /* AppDelegate.m */,
128 | ABC8ACD51A71A31F00B10301 /* Info.plist */,
129 | ABC8ACD91A71A31F00B10301 /* main.m */,
130 | );
131 | name = "Supporting Files";
132 | sourceTree = "";
133 | };
134 | /* End PBXGroup section */
135 |
136 | /* Begin PBXNativeTarget section */
137 | ABC8ACD01A71A31F00B10301 /* NSViewControllerPresentations */ = {
138 | isa = PBXNativeTarget;
139 | buildConfigurationList = ABC8ACF11A71A31F00B10301 /* Build configuration list for PBXNativeTarget "NSViewControllerPresentations" */;
140 | buildPhases = (
141 | ABC8ACCD1A71A31F00B10301 /* Sources */,
142 | ABC8ACCE1A71A31F00B10301 /* Frameworks */,
143 | ABC8ACCF1A71A31F00B10301 /* Resources */,
144 | );
145 | buildRules = (
146 | );
147 | dependencies = (
148 | );
149 | name = NSViewControllerPresentations;
150 | productName = TestOSXApp;
151 | productReference = ABC8ACD11A71A31F00B10301 /* NSViewControllerPresentations.app */;
152 | productType = "com.apple.product-type.application";
153 | };
154 | /* End PBXNativeTarget section */
155 |
156 | /* Begin PBXProject section */
157 | ABC8ACC91A71A31F00B10301 /* Project object */ = {
158 | isa = PBXProject;
159 | attributes = {
160 | LastSwiftMigration = 0700;
161 | LastSwiftUpdateCheck = 0700;
162 | LastUpgradeCheck = 1010;
163 | ORGANIZATIONNAME = com.ellipsis;
164 | TargetAttributes = {
165 | ABC8ACD01A71A31F00B10301 = {
166 | CreatedOnToolsVersion = 6.1;
167 | LastSwiftMigration = 1010;
168 | };
169 | };
170 | };
171 | buildConfigurationList = ABC8ACCC1A71A31F00B10301 /* Build configuration list for PBXProject "NSViewControllerPresentations" */;
172 | compatibilityVersion = "Xcode 3.2";
173 | developmentRegion = English;
174 | hasScannedForEncodings = 0;
175 | knownRegions = (
176 | en,
177 | Base,
178 | );
179 | mainGroup = ABC8ACC81A71A31F00B10301;
180 | productRefGroup = ABC8ACD21A71A31F00B10301 /* Products */;
181 | projectDirPath = "";
182 | projectRoot = "";
183 | targets = (
184 | ABC8ACD01A71A31F00B10301 /* NSViewControllerPresentations */,
185 | );
186 | };
187 | /* End PBXProject section */
188 |
189 | /* Begin PBXResourcesBuildPhase section */
190 | ABC8ACCF1A71A31F00B10301 /* Resources */ = {
191 | isa = PBXResourcesBuildPhase;
192 | buildActionMask = 2147483647;
193 | files = (
194 | ABC8ACDF1A71A31F00B10301 /* Images.xcassets in Resources */,
195 | ABC8ACE21A71A31F00B10301 /* Main.storyboard in Resources */,
196 | ABC8ACFB1A71A44F00B10301 /* MyViewController.xib in Resources */,
197 | );
198 | runOnlyForDeploymentPostprocessing = 0;
199 | };
200 | /* End PBXResourcesBuildPhase section */
201 |
202 | /* Begin PBXSourcesBuildPhase section */
203 | ABC8ACCD1A71A31F00B10301 /* Sources */ = {
204 | isa = PBXSourcesBuildPhase;
205 | buildActionMask = 2147483647;
206 | files = (
207 | ABC8ACFE1A71A99C00B10301 /* MyCustomAnimator.m in Sources */,
208 | ABC8ACDD1A71A31F00B10301 /* ViewController.m in Sources */,
209 | AB8965831A75683C00FF9F1E /* MyCustomSwiftSegue.swift in Sources */,
210 | AB8965851A7568F100FF9F1E /* MyCustomSwiftAnimator.swift in Sources */,
211 | AB937ECA1A7429BE00C8391F /* MyView.m in Sources */,
212 | AB8965801A7567DB00FF9F1E /* MyCustomSegue.m in Sources */,
213 | ABC8ACDA1A71A31F00B10301 /* main.m in Sources */,
214 | ABC8ACFA1A71A44F00B10301 /* MyViewController.m in Sources */,
215 | ABC8ACD81A71A31F00B10301 /* AppDelegate.m in Sources */,
216 | );
217 | runOnlyForDeploymentPostprocessing = 0;
218 | };
219 | /* End PBXSourcesBuildPhase section */
220 |
221 | /* Begin PBXVariantGroup section */
222 | ABC8ACE01A71A31F00B10301 /* Main.storyboard */ = {
223 | isa = PBXVariantGroup;
224 | children = (
225 | ABC8ACE11A71A31F00B10301 /* Base */,
226 | );
227 | name = Main.storyboard;
228 | sourceTree = "";
229 | };
230 | /* End PBXVariantGroup section */
231 |
232 | /* Begin XCBuildConfiguration section */
233 | ABC8ACEF1A71A31F00B10301 /* Debug */ = {
234 | isa = XCBuildConfiguration;
235 | buildSettings = {
236 | ALWAYS_SEARCH_USER_PATHS = NO;
237 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
238 | CLANG_CXX_LIBRARY = "libc++";
239 | CLANG_ENABLE_MODULES = YES;
240 | CLANG_ENABLE_OBJC_ARC = YES;
241 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
242 | CLANG_WARN_BOOL_CONVERSION = YES;
243 | CLANG_WARN_COMMA = YES;
244 | CLANG_WARN_CONSTANT_CONVERSION = YES;
245 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
246 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
247 | CLANG_WARN_EMPTY_BODY = YES;
248 | CLANG_WARN_ENUM_CONVERSION = YES;
249 | CLANG_WARN_INFINITE_RECURSION = YES;
250 | CLANG_WARN_INT_CONVERSION = YES;
251 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
252 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
253 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
254 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
255 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
256 | CLANG_WARN_STRICT_PROTOTYPES = YES;
257 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
258 | CLANG_WARN_UNREACHABLE_CODE = YES;
259 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
260 | CODE_SIGN_IDENTITY = "-";
261 | COPY_PHASE_STRIP = NO;
262 | ENABLE_STRICT_OBJC_MSGSEND = YES;
263 | ENABLE_TESTABILITY = YES;
264 | GCC_C_LANGUAGE_STANDARD = gnu99;
265 | GCC_DYNAMIC_NO_PIC = NO;
266 | GCC_NO_COMMON_BLOCKS = YES;
267 | GCC_OPTIMIZATION_LEVEL = 0;
268 | GCC_PREPROCESSOR_DEFINITIONS = (
269 | "DEBUG=1",
270 | "$(inherited)",
271 | );
272 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
273 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
274 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
275 | GCC_WARN_UNDECLARED_SELECTOR = YES;
276 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
277 | GCC_WARN_UNUSED_FUNCTION = YES;
278 | GCC_WARN_UNUSED_VARIABLE = YES;
279 | MACOSX_DEPLOYMENT_TARGET = 10.10;
280 | MTL_ENABLE_DEBUG_INFO = YES;
281 | ONLY_ACTIVE_ARCH = YES;
282 | SDKROOT = macosx;
283 | SWIFT_SWIFT3_OBJC_INFERENCE = On;
284 | };
285 | name = Debug;
286 | };
287 | ABC8ACF01A71A31F00B10301 /* Release */ = {
288 | isa = XCBuildConfiguration;
289 | buildSettings = {
290 | ALWAYS_SEARCH_USER_PATHS = NO;
291 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
292 | CLANG_CXX_LIBRARY = "libc++";
293 | CLANG_ENABLE_MODULES = YES;
294 | CLANG_ENABLE_OBJC_ARC = YES;
295 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
296 | CLANG_WARN_BOOL_CONVERSION = YES;
297 | CLANG_WARN_COMMA = YES;
298 | CLANG_WARN_CONSTANT_CONVERSION = YES;
299 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
300 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
301 | CLANG_WARN_EMPTY_BODY = YES;
302 | CLANG_WARN_ENUM_CONVERSION = YES;
303 | CLANG_WARN_INFINITE_RECURSION = YES;
304 | CLANG_WARN_INT_CONVERSION = YES;
305 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
306 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
307 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
308 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
309 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
310 | CLANG_WARN_STRICT_PROTOTYPES = YES;
311 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
312 | CLANG_WARN_UNREACHABLE_CODE = YES;
313 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
314 | CODE_SIGN_IDENTITY = "-";
315 | COPY_PHASE_STRIP = YES;
316 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
317 | ENABLE_NS_ASSERTIONS = NO;
318 | ENABLE_STRICT_OBJC_MSGSEND = YES;
319 | GCC_C_LANGUAGE_STANDARD = gnu99;
320 | GCC_NO_COMMON_BLOCKS = YES;
321 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
322 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
323 | GCC_WARN_UNDECLARED_SELECTOR = YES;
324 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
325 | GCC_WARN_UNUSED_FUNCTION = YES;
326 | GCC_WARN_UNUSED_VARIABLE = YES;
327 | MACOSX_DEPLOYMENT_TARGET = 10.10;
328 | MTL_ENABLE_DEBUG_INFO = NO;
329 | SDKROOT = macosx;
330 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
331 | SWIFT_SWIFT3_OBJC_INFERENCE = On;
332 | };
333 | name = Release;
334 | };
335 | ABC8ACF21A71A31F00B10301 /* Debug */ = {
336 | isa = XCBuildConfiguration;
337 | buildSettings = {
338 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
339 | CLANG_ENABLE_MODULES = YES;
340 | COMBINE_HIDPI_IMAGES = YES;
341 | INFOPLIST_FILE = NSViewControllerPresentations/Info.plist;
342 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
343 | PRODUCT_BUNDLE_IDENTIFIER = "net.ellipsis.$(PRODUCT_NAME:rfc1034identifier)";
344 | PRODUCT_NAME = NSViewControllerPresentations;
345 | SWIFT_OBJC_BRIDGING_HEADER = "NSViewControllerPresentations/NSViewControllerPresentations-Bridging-Header.h";
346 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
347 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
348 | SWIFT_VERSION = 4.2;
349 | };
350 | name = Debug;
351 | };
352 | ABC8ACF31A71A31F00B10301 /* Release */ = {
353 | isa = XCBuildConfiguration;
354 | buildSettings = {
355 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
356 | CLANG_ENABLE_MODULES = YES;
357 | COMBINE_HIDPI_IMAGES = YES;
358 | INFOPLIST_FILE = NSViewControllerPresentations/Info.plist;
359 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
360 | PRODUCT_BUNDLE_IDENTIFIER = "net.ellipsis.$(PRODUCT_NAME:rfc1034identifier)";
361 | PRODUCT_NAME = NSViewControllerPresentations;
362 | SWIFT_OBJC_BRIDGING_HEADER = "NSViewControllerPresentations/NSViewControllerPresentations-Bridging-Header.h";
363 | SWIFT_SWIFT3_OBJC_INFERENCE = Default;
364 | SWIFT_VERSION = 4.2;
365 | };
366 | name = Release;
367 | };
368 | /* End XCBuildConfiguration section */
369 |
370 | /* Begin XCConfigurationList section */
371 | ABC8ACCC1A71A31F00B10301 /* Build configuration list for PBXProject "NSViewControllerPresentations" */ = {
372 | isa = XCConfigurationList;
373 | buildConfigurations = (
374 | ABC8ACEF1A71A31F00B10301 /* Debug */,
375 | ABC8ACF01A71A31F00B10301 /* Release */,
376 | );
377 | defaultConfigurationIsVisible = 0;
378 | defaultConfigurationName = Release;
379 | };
380 | ABC8ACF11A71A31F00B10301 /* Build configuration list for PBXNativeTarget "NSViewControllerPresentations" */ = {
381 | isa = XCConfigurationList;
382 | buildConfigurations = (
383 | ABC8ACF21A71A31F00B10301 /* Debug */,
384 | ABC8ACF31A71A31F00B10301 /* Release */,
385 | );
386 | defaultConfigurationIsVisible = 0;
387 | defaultConfigurationName = Release;
388 | };
389 | /* End XCConfigurationList section */
390 | };
391 | rootObject = ABC8ACC91A71A31F00B10301 /* Project object */;
392 | }
393 |
--------------------------------------------------------------------------------
/NSViewControllerPresentations/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 |
651 |
652 |
653 |
654 |
655 |
656 |
657 |
658 |
659 |
660 |
661 |
662 |
663 |
664 |
665 |
666 |
667 |
668 |
669 |
670 |
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
690 |
701 |
712 |
723 |
734 |
745 |
756 |
767 |
778 |
779 |
780 |
781 |
782 |
783 |
784 |
785 |
786 |
787 |
788 |
789 |
790 |
791 |
792 |
793 |
794 |
795 |
796 |
797 |
798 |
799 |
800 |
801 |
802 |
803 |
804 |
805 |
806 |
807 |
808 |
809 |
819 |
820 |
821 |
822 |
823 |
824 |
825 |
826 |
827 |
828 |
829 |
830 |
831 |
832 |
833 |
834 |
835 |
--------------------------------------------------------------------------------