2016-06-01 7 views
2

私はiOSアプリケーションで作業していますが、小さなバグが1つあります。私はビューを追加検索するときにsearchResultsを表示するテーブルビューとのMapView(HomeViewController.swift別のクラスのマップビューにアクセスできない

  • ビューの上に

    • カスタム検索バー(LocationSearchTable.swift

    :私のプロジェクトには、以下が含まれています私のmapviewの上と私のsearchbarの背後にtableview。これはすべて正常に動作します。

    しかし、tableViewからsearchresultを選択すると、mapViewがnilであるため、クラッシュします。

    私はHomeViewController.swiftに次のように抱えている:

    func didChangeSearchText(searchText: String) { 
        if (searchText == "") { 
         self.locationSearchTable.view.removeFromSuperview() 
        } else { 
         self.view.insertSubview(self.locationSearchTable.view, aboveSubview: mapView) 
        } 
    } 
    

    そして、私がタップしたときのMapViewを呼び出したいLocationSearchTable.swiftに:このようなのMapViewにLocationSearchTableを追加

    @IBOutlet weak var mapView: MKMapView! 
    
    override func viewDidLoad() { 
        mapView.delegate = self 
    } 
    

    リスト内のもの:

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
        let mapView = HomeViewController().mapView 
        print(mapView) 
    } 
    

    アクセルしようとするときそこからマップビューがあります。それはnilです。何故ですか?私はここで何が欠けていますか?

    敬具、

    はWouter

  • 答えて

    2

    あなたはHomeViewControllerの新しいインスタンスを作成し、awakeFromNibが発生したメソッドの前にそののMapViewを求めます。 HomeViewControllerコントローラが画面に追加されるまで、その時点のmapViewは0になります。

    私があなたの階層を正しく読んでいるなら、これを処理する最善の方法は、あなたからの地図を使ってビューに委譲することです。

    またはmapViewへの参照をtableViewに渡すことができます

    +0

    本当です。デリゲートを書いて、それはうまくいった。正しい方向に私を指してくれてありがとう!本当に私に時間の巨大な負荷をかけてくれました。ここでもiOSを学ぼうとしています。 – Wouter125

    +1

    @ Wouter125幸運を助けてうれしい! – bolnad

    関連する問題