Swift Router
Inspired from CTMediator
Different with SRouter, It's Based On RunTime of AnyObject
/* At LoginRegister Module
*/
class LoginViewController: UIViewController {
@objc class func enterLogin(navi: UINavigationController, param1: Int, param2: String) -> LoginViewController {
let loginController = LoginViewController(nibName: "LoginViewController", bundle: Bundle(for: LoginViewController.self))
loginController.title = param2 + "\(param1)"
navi.pushViewController(loginController, animated: true)
return loginController
}
}
/* At Any Moudle (don't need import LoginRegister Module)
*/
@objc protocol AnyMoudleUsedRouteTable {
@objc func enterLogin(navi: UINavigationController, param1: Int, param2: String) -> UIViewController
}
_ = ARouter.shared.performTarget("LoginRegisterModule.LoginViewController")?.enterLogin(navi: navigationController, param1: 1024, param2: "Hello")
由于 @objc 限制,参数默认不支持struct类型。但支持swift标准库的struct数据类型,这是由于他们实现了_ObjectiveCBridgeable
协议