GTMRouter 1.3.6

GTMRouter 1.3.6

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2018年10月
SPM支持SPM

GTMYang维护。



GTMRouter 1.3.6

  • GTMYang


GTMRouter

GTMRouter 是一个用Swift实现的视图控制器路由组件,简单易用!!!

演示

直接下载代码,里面包含演示

安装

Cocoapods

如果有需要,请安装Cocoapods。

$ gem install cocoapods

在您的Podfile中添加GTMRouter

use_frameworks!

pod 'GTMRouter'

然后,运行以下命令。

$ pod install

手动操作

GTMRouter文件夹复制到您的项目中。这样就完成了。

注意:请确保在构建阶段中将GTMRouter中的所有文件包含在编译源文件中。

版本

Vesrion 1.3.5

本版本需要Xcode 9.0和Swift 4.

使用帮助

首先,导入GTMRouter.

import GTMRouter

界面跳转

    // push方式打开
    GTMRouter.push(url: "router://GTMRouterExample/ViewControllerB")
    // present方式打开
    GTMRouter.present(url: "router://GTMRouterExample/ViewControllerB")

URL传递参数

     GTMRouter.push(url: "router://GTMRouterExample/ViewControllerC?id=1&name=GTMYang&ctitle=bunengzhongwen"

字典传递参数

let params:[String:Any] = ["image": UIImage(named: "logo.png") as Any]
GTMRouter.push(url: "router://GTMRouterExample/ViewControllerC?id=1&name=GTMYang&ctitle=bunengzhongwen", parameter: params)

自定义Helper

///  Helper协议
public protocol GRHelper {
    var navigationController: UINavigationController? {get}
    var topViewController: UIViewController? {get}
}

有时候由于项目个性化需求,默认的Helper可能无法满足,这时可以通过自定义Helper类实现GRHelper协议,然后通过

/// 注入自己的Helper类
GTMRouter.setHelper(yourHelper)

网页跳转

/// 需要自定义自己的webViewController的工厂类(实现WebVCFactory)
///  WebVCFactory协议
public protocol WebVCFactory {
    func createWebVC(with urlString: String) -> UIViewController
}

/// 然后调用func setWebVCFactory(factory: WebVCFactory)方法将工厂类注入
/// 如果要支持http的url需要设置WebViewController的工厂类
///
/// - Parameters:
/// - factory: 用来生成Web容器控制器的工厂类(需要实现WebVCFactory协议)
public func setWebVCFactory(factory: WebVCFactory) {
    Router.shared.webVCFactory = factory
}

参数实例变量必须用@objc修饰

因为苹果在Swift 4 中修改了自动添加 @objc 的逻辑:一个继承 NSObject 的 swift 类不再默认为所有函数添加 @objc。仅在实现 OC 接口和重写 OC 方法时,才会自动为函数添加 @objc 标识。

#缺点与不足 参数不支持一些类型:Optional, Optional, Optional, Optional 因为是使用的oc的setValue(val, forKey: key)方式来设置属性值的

如果您有好的改进方式,请不吝赐教

#参与开源 欢迎提交 issue 和 PR,大门永远向所有人敞开。

#开源协议 本项目遵循 MIT 协议开源,具体请查看根目录下的 LICENSE 文件。