我正在开发iOS应用程序并且有一个小错误。我的项目包含以下内容:
HomeViewController.swift
)LocationSearchTable.swift
)搜索时,我将带有tableview的视图添加到我的mapview顶部和搜索栏后面。一切正常。
但是现在当我从tableView中选择一个searchresult时它会崩溃,因为它说我的mapView是零。
我在HomeViewController.swift
中有以下内容:
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
mapView.delegate = self
}
将LocationSearchTable添加到mapView,如下所示:
func didChangeSearchText(searchText: String) {
if (searchText == "" ) {
self.locationSearchTable.view.removeFromSuperview()
} else {
self.view.insertSubview(self.locationSearchTable.view, aboveSubview: mapView)
}
}
在LocationSearchTable.swift上,我想在点击列表中的内容时调用mapView:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let mapView = HomeViewController().mapView
print(mapView)
}
尝试从那里访问mapView时nil
。这是为什么?我在这里缺少什么?
亲切的问候,
的Wouter
答案 0 :(得分:2)
您创建HomeViewController的新实例,然后在方法awakeFromNib发生之前询问其mapView。在将HomeViewController控制器添加到屏幕
之前,此时的mapView将为nil如果我正在阅读您的层次结构,处理此问题的最佳方法是使用您的tableview中的地图委托回视图。
或者您可以将对mapView的引用传递给tableView