2016-06-01 1 views
2

iOS 앱에서 작업 중이며 작은 버그가 하나 있습니다. 나는 함께보기를 추가 검색 할 때의 SearchResult를 표시하는 tableview에있는지도보기 (HomeViewController.swift) 다른 클래스의지도보기에 액세스 할 수 없습니다.

  • 보기 위에

    • 맞춤 검색 창 (LocationSearchTable.swift)

    : 내 프로젝트는 다음을 포함 내 mapview 상단 및 내 searchbar 뒤에 tableview. 이 모든 것이 잘 작동합니다.

    하지만 tableView에서 searchresult를 선택하면 내 mapView가 nil이라고 표시되기 때문에 충돌이 발생합니다. 태핑

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

    그리고 LocationSearchTable.swift에

    내가지도보기를 호출 할이 같은지도보기에 LocationSearchTable 추가

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

    : 나는 HomeViewController.swift에 다음과 같은 데

    목록에있는 항목에 :

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

    ss 거기에서 mapView는 nil입니다. 왜 그런가요? 그리고 나는 무엇을 여기에서 놓치고 있냐?

    종류와 관련,

    WOUTER

  • 답변

    2

    당신은 HomeViewController의 새로운 인스턴스를 만든 다음로 awakeFromNib가 발생 방법 이전의지도보기를 요구. 그 시점에서 MapView는 HomeViewController 컨트롤러가 화면에 추가 될 때까지 nil이됩니다.

    제가 가장 적합한 방법은 계층 구조를 읽을 때 tableview 뷰를 사용하여 뷰에 위임하는 것입니다.

    또는 mapView에 대한 참조를 tableView에 전달할 수 있습니다.

    +0

    사실입니다. 대표자를 직접 썼다. 저를 올바른 방향으로 가리켜 주셔서 감사합니다! 정말로 저를 거대한 시간의 부하로 구해 냈습니다. 여기 iOS를 배우려고 여전히 노력 중입니다. 하하. – Wouter125

    +1

    @ Wouter125 도움을 기쁘게, 행운을 빕니다! – bolnad