SegueKit 3.0.0

SegueKit 3.0.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release May 2017
SwiftSwift Version 3.0
SPMSupports SPM

Maintained by langyanduan, langyanduan.



SegueKit 3.0.0

SegueKit

Perform storyboard segues with closures.

Why use this?

If you want to pass some parameters to destination view controller which created by segue in storyboard, usual should override prepareForSegue:sender:. But if work with SegueKit, you can do it in closure.

Usage

If you create a segue in storyboard named “A”, you can perfrom the segue like this:

import SegueKit

class ViewController: UIViewController {
    let disposeBag = DisposeBag()

    // basic
    @IBAction func onBtnA(sender: AnyObject) {
        performSegue(with: "A") { (segue) in
            segue.destinationViewController.view.backgroundColor = UIColor.yellowColor()
        }
    }
}

Extension Usage

  • with R.swfit
  • with Rx
  • with Rx + R.swift

Perform a segue with Extension

import SegueKit

class ViewController: UIViewController {
    let disposeBag = DisposeBag()

    // with R.swift
    @IBAction func onBtnB(sender: AnyObject) {
        performSegue(with: R.segue.viewController.b) { (segue) in
            segue.destinationViewController.view.backgroundColor = UIColor.greenColor()
        }
    }

    // with Rx
    @IBAction func onBtnC(sender: AnyObject) {
        rx_performSegue("C")
            .subscribeNext { (segue) in
                segue.destinationViewController.view.backgroundColor = UIColor.redColor()
            }
            .addDisposableTo(disposeBag)
    }

    // with Rx + R.swift
    @IBAction func onBtnD(sender: AnyObject) {
        rx_performSegue(R.segue.viewController.d)
            .subscribeNext { (segue) in
                segue.destinationViewController.view.backgroundColor = UIColor.blueColor()
            }
            .addDisposableTo(disposeBag)
    }
}

Rx binding

class A: UIViewController {

    let disposeBag = DisposeBag()
    @IBOutlet weak var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        // with Rx
        button.rx_tap.bindTo(rx_segue("A")) { (segue, _) in
            segue.destinationViewController.view.backgroundColor = UIColor.blackColor()
        }.addDisposableTo(disposeBag)
    }
}

class B: UIViewController {

    let disposeBag = DisposeBag()
    @IBOutlet weak var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        // with Rx + R.swift
        button.rx_tap.bindTo(rx_segue(R.segue.b.b)) { (segue, _) in
            segue.destinationViewController.view.backgroundColor = UIColor.brownColor()
        }.addDisposableTo(disposeBag)
    }

}

Rx subscribe

import SegueKit

class C: UIViewController {
    let disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()

        // with Rx
        rx_segue("C").subscribeNext { (segue, sender) in
            segue.destinationViewController.view.backgroundColor = UIColor.purpleColor()
        }.addDisposableTo(disposeBag)
    }
}

class D: UIViewController {
    let disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()

        // with Rx + R.swift
        rx_segue(R.segue.d.d).subscribeNext { (segue, sender) in
            segue.destinationViewController.view.backgroundColor = UIColor.orangeColor()
        }.addDisposableTo(disposeBag)
    }
}

Example

To run the example project, clone the repo, and run pod install from the Example directory first.

Install

License

SegueKit are created by langyanduan and released under a MIT License.