当我设置 Viewcontroller 是根导航控制器时,我收到 found nil 错误
When I set the Viewcontroller is the root navigation controller, I recieve the found nil error
当我设置 ViewController 是文件 Appdelegate.swift
中的根导航控制器时,像这样:
var viewcontroller=ViewController();
var rootnavigationcontroller=UINavigationController.init(rootViewController: viewcontroller);
self.window?.rootViewController=rootnavigationcontroller;
然后我这样配置 ViewController:
class ViewController: UIViewController,CLLocationManagerDelegate,MKMapViewDelegate{
@IBOutlet weak var MapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
loadLaunchScreen();
Initilize();//Here configure the MapView parameters;
}
然后在函数 Initilize();
中我收到错误消息,表示 MapView
已找到 nil。
但是如果我不将这个Viewcontroller设置为Appdelegate.swift
中的rootnavigationcontroller,我会运行很好。
我想问一下为什么会这样,怎么解决?
如果您不添加 rootnavigationcontroller
,那么您的 ViewController
代码将不会被执行。所以你不会得到任何错误。要成功实施 MapView,请在情节提要或 XIB 中绑定您的 MapView @IBOutlet
。
如果您使用的是故事板,那么试试这个
let stroyboard = UIStoryboard.init(name: "storyboardname", bundle: nil)//nil if its not out of your project
let ViewController = storyboard.instantiateViewController(withIdentifier: "yourstoryboadid")
var rootnavigationcontroller=UINavigationController.init(rootViewController: viewcontroller);
self.window?.rootViewController=rootnavigationcontroller;
当您使用故事情节并且您不是从情节提要中实例化 viewController 时,当您的出口发现 nil 时可能会发生上述问题,因为它不受出口限制
如果您不使用故事板,那么您的代码是完美的
当我设置 ViewController 是文件 Appdelegate.swift
中的根导航控制器时,像这样:
var viewcontroller=ViewController();
var rootnavigationcontroller=UINavigationController.init(rootViewController: viewcontroller);
self.window?.rootViewController=rootnavigationcontroller;
然后我这样配置 ViewController:
class ViewController: UIViewController,CLLocationManagerDelegate,MKMapViewDelegate{
@IBOutlet weak var MapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
loadLaunchScreen();
Initilize();//Here configure the MapView parameters;
}
然后在函数 Initilize();
中我收到错误消息,表示 MapView
已找到 nil。
但是如果我不将这个Viewcontroller设置为Appdelegate.swift
中的rootnavigationcontroller,我会运行很好。
我想问一下为什么会这样,怎么解决?
如果您不添加 rootnavigationcontroller
,那么您的 ViewController
代码将不会被执行。所以你不会得到任何错误。要成功实施 MapView,请在情节提要或 XIB 中绑定您的 MapView @IBOutlet
。
如果您使用的是故事板,那么试试这个
let stroyboard = UIStoryboard.init(name: "storyboardname", bundle: nil)//nil if its not out of your project
let ViewController = storyboard.instantiateViewController(withIdentifier: "yourstoryboadid")
var rootnavigationcontroller=UINavigationController.init(rootViewController: viewcontroller);
self.window?.rootViewController=rootnavigationcontroller;
当您使用故事情节并且您不是从情节提要中实例化 viewController 时,当您的出口发现 nil 时可能会发生上述问题,因为它不受出口限制
如果您不使用故事板,那么您的代码是完美的