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 文件。