2016-02-26 93 views
0

這就像5個小時我堅持這個問題。我最近開始使用Swift,不能說我喜歡它,並且在問題發生後我會​​收到問題。我正在嘗試做很簡單的事情。我有類有日期(NSDate),durration(NSTimeInterval),locationName(字符串)和locationMapView(MKMapView)。它沒有實現任何協議。我想在我的初始化程序中獲取座標並將其設置爲MapView。我發現了一些關於如何去做的指南,但是它卻發生了一些基本問題。我甚至無法設置一個區域。下面是初始化的片段:Swift 2.x無法設置MapView Region

self.locationMapView = MKMapView(); 

    let coordinate:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 34.03, longitude: 118.14) 
    let span = MKCoordinateSpanMake(100, 80) 
    let region = MKCoordinateRegionMake(coordinate, span) 
    self.locationMapView!.setRegion(region, animated: true) 

    print(String(region)) 
    print("---") 
    print(String(locationMapView!.region)) 

這裏所顯示在控制檯:

MKCoordinateRegion(center: __C.CLLocationCoordinate2D(latitude: 34.03, longitude: 118.14), span: __C.MKCoordinateSpan(latitudeDelta: 100.0, longitudeDelta: 80.0)) 
     --- 
    MKCoordinateRegion(center: __C.CLLocationCoordinate2D(latitude: nan, longitude: nan), span: __C.MKCoordinateSpan(latitudeDelta: 0.0, longitudeDelta: 0.0)) 

我花了一段時間來弄明白,價值觀尚未分配,但我不知道爲什麼。我在許多答案和指南中找到了這種代碼。我的實施有什麼問題?

謝謝大家的幫助,我很抱歉,如果這是愚蠢的。

回答

0

部分答案:

我已經挖得更深一些,我想我有我的答案。看起來你不能分配任何東西給MKMapView對象,如果它沒有直接連接到顯示器(通過插座)。

我所做的是從我的類中刪除了與MapView相關的所有內容,並將其移至基於UITableViewCell的類中,該類將出口指向特定的MapView。在那裏,我能夠分配座標和一切按預期工作。

注意:您仍然無法對像tempMapView這樣的其他變量進行操作,然後將其分配給實際的MapView。它不會工作。

我希望我能幫助那些偶然遇到同樣問題的人。如果有人知道你爲什麼不能直接與顯示器連接或者如何工作,請告訴我。

1

的問題是這一行:

self.locationMapView = MKMapView(); 

您創建了一個地圖視圖,但你沒有給它分配一個幀。因此它的大小爲零。因此它不能有一個區域。

+0

這基本上是我在我自己的答案中寫的(我認爲)。唯一的謎就是爲什麼我無法在創建MapView之前和之後將其分配給特定的框架?我的意思是它首先完成對象中的所有邏輯,然後將其分配到我想要使用它的地方。特別是如果我想在兩個不同的地方使用相同的地圖。 – Bielik

+0

@Bielik我認爲如果你已經正確地創建了地圖視圖,你的第一個代碼可以正常工作。而不是說'self.locationMapView = MKMapView()',你說'self.locationMapView = MKMapView(frame:someRealFrame)'。 - 第二點,「我想在兩個不同的地方使用同一張地圖」,對我來說毫無意義;一個視圖不能同時出現在兩個不同的地方。 – matt

+0

我開始明白一些事情。正如我所說,我剛剛開始迅速,並不完全知道在這種情況下的框架。關於這2個地方,我可能會解釋。正如我所說的這個locationMapView是簡單類(4個變量/屬性)的一部分。我想讓MapView準備好在相同的地方顯示,更精確地說,在tableViewCell中顯示,並且在單擊該單元格後顯示詳細的視圖。這就是我想要在兩個不同的地方展示它的意思。所以通過創建這個框架我可以做到這一點? – Bielik