Giter VIP home page Giter VIP logo

ksnavigationcontroller's Introduction

KSNavigationController v0.3

UINavigationController for macOS (Swift, Objective-C)

ksnavigationcontrollerdemo

Looking for macOS (Mac OS X) analog of UIKit's UINavigationController from iOS? This class mimics its behavior.

Attention: Navigation bar is not implemented. All methods must be called from main thread.

Swift version (3.0): KSNavigationController/Swift

ObjC version: KSNavigationController/ObjectiveC

For Swift 2.2 support see version 0.1.

Usage

Creating a navigation controller

// Swift
let vc1 = TestViewController()
let navVC = KSNavigationController(rootViewController: vc1)
navVC?.view.frame = NSMakeRect(0.0, 0.0, 480.0, 272.0) // Or use constraints if appropriate
self.window.contentViewController = navVC
self.window.orderFrontRegardless()
// ObjC
TestViewController *vc1 = [[TestViewController alloc] init];
KSNavigationController *navVC = [[KSNavigationController alloc] initWithRootViewController:vc1];
navVC.view.frame = NSMakeRect(0.0, 0.0, 480.0, 272.0); // Or use constraints if appropriate
self.window.contentViewController = navVC;
[self.window orderFrontRegardless];

Here your TestViewController class is a subclass of NSViewController. It also has to conform to KSNavigationControllerCompatible protocol in order to have access to navigationController property.

Pushing and popping view controllers onto / from stack

Now, inside your NSViewController you can access navigationController property (just like in iOS) and push any new view controller on top of navigation stack:

// Swift
@IBAction func pushAction(sender: AnyObject) {
    self.navigationController?.pushViewController(TestViewController(), animated: true)
}
// ObjC
- (IBAction)pushAction:(id)sender {
    [self.navigationController pushViewController:[[TestViewController alloc] init] animated:YES];
}

Do the following to pop the top view controller from stack:

// Swift
self.navigationController?.popViewControllerAnimated(true)
// ObjC
[self.navigationController popViewControllerAnimated:YES];

KSNavigationControllerCompatible protocol

Conform to this protocol if you want your NSViewController subclass to work with KSNavigationController.

This protocol has only one property:

/*Swift*/ weak var navigationController: KSNavigationController? {get set}
/*ObjC*/ @property (weak, nonatomic) KSNavigationController *navigationController;

Warning: Do not set this properly by yourself.

Objective-C only: You must synthesize navigationController property explicitly in your subclass implementation:

@synthesize navigationController = _navigationController;

See example projects for more understanding.

License

Published under MIT license.

Copyright (c) 2016 A. Gordiyenko.

ksnavigationcontroller's People

Contributors

coffellas-cto avatar ekurutepe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.