ios - 导航控制器从今天扩展为 nil
问题描述
我有一个今天的扩展,其中有一个启动应用程序的按钮,当应用程序从这个按钮启动时导航控制器变为 nil
我不知道为什么会这样?
这是我在 appdelegate 中的代码:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
var storyBoard: UIStoryboard!
var mainViewController: MainViewController!
self.window = UIWindow(frame: UIScreen.main.bounds)
if UserDefaults.getLanguage() == "ar" {
storyBoard = UIStoryboard(name: "MainAR", bundle: nil)
} else {
storyBoard = UIStoryboard(name: "Main", bundle: nil)
}
let viewController = storyBoard.instantiateViewController(withIdentifier: "swRevealController") as! SWRevealViewController
mainViewController = storyBoard.instantiateViewController(withIdentifier: "mainView") as! MainViewController
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()
viewController.setFront(mainViewController, animated: true)
if url.scheme == "open"
{
switch url.host
{
case "1"?:
mainViewController.isTaxi = true
break
case "2"?:
mainViewController.isPfp = true
break
case "3"?:
mainViewController.isDarbi = true
break
default:
break
}
}
return true
}
请问有人可以帮忙吗?
解决方案
这是因为这一行覆盖了故事板导航
self.window?.rootViewController = viewController
你必须将它嵌入到这样的导航中
self.window?.rootViewController = UINavigationController(rootViewController: viewController)
编辑:在此行之前 init isTaxi
mainViewController.isTaxi = // set it to true / false
viewController.setFront(mainViewController, animated: true)
//
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
var storyBoard: UIStoryboard!
var mainViewController:MainViewController!
self.window = UIWindow(frame: UIScreen.main.bounds)
if UserDefaults.getLanguage() == "ar" {
storyBoard = UIStoryboard(name: "MainAR", bundle: nil)
} else {
storyBoard = UIStoryboard(name: "Main", bundle: nil)
}
mainViewController = storyBoard.instantiateViewController(withIdentifier: "mainView") as! MainViewController
if url.scheme == "open"
{
switch url.host
{
case "1"?:
mainViewController.isTaxi = true
break
case "2"?:
mainViewController.isPfp = true
break
case "3"?:
mainViewController.isDarbi = true
break
default:
break
}
}
let viewController = storyBoard.instantiateViewController(withIdentifier: "swRevealController") as! SWRevealViewController
viewController.setFront(mainViewController, animated: true)
self.window?.rootViewController = UINavigationController(rootViewController: viewController)
self.window?.makeKeyAndVisible()
return true
}
推荐阅读
- javascript - 订阅和取消订阅 React Native Netinfo 的正确方法
- flutter - 我在 ontap 上遇到错误我该如何解决它是因为零安全性我该如何解决它
- background - webgl ,在 gl.drawArrays() 之后,背景消失了吗?
- phpmyadmin - 如何使用 xampp 在 phpmyAdmin 中更改(root)用户名
- wordpress - 根据woocommerce中的运输方式隐藏billing_postcode字段
- c - 添加矩阵的 C 语法/运算符是什么?
- php - 无法在 Laravel 8 中更新数据
- user-agent - 阻止 Google Web Preview 机器人
- nginx - 使用 ssl 证书与其他机器传递请求
- javascript - 需要以秒为单位找到两个日期之间的差异