最近在项目中使用URLNavigator遇到了点小坑,使用xcode默认配置新建project,照着demo敲了一通发现不起作用,最后发现原因是默认配置文件Info.plist中,配置了Main storyboard file base name
即下图所示
这个配置会影响到AppDelegate自定义window的代码:
import URLNavigator
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
private var navigator: NavigatorType?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
) -> Bool {
let navigator = Navigator()
// Initialize navigation map
NavigationMap.initialize(navigator: navigator)
let window = UIWindow(frame: UIScreen.main.bounds)
window.makeKeyAndVisible()
window.backgroundColor = .white
let userListViewController = UserListViewController(navigator: navigator)
window.rootViewController = UINavigationController(rootViewController: userListViewController)
self.window = window
self.navigator = navigator
return true
}
}
这时候调用push页面是不会跳转的,可能是因为URLNavigator框架默认是把顶层ViewController作为默认的navigationController,而此项配置使得顶层ViewController不是自定义的UINavigationController,从而导致URL返回的ViewController没有navigationController,不能正常加载出来。
因此去掉info.plist中的Main storyboard file base name配置即可