我有兩個類 - MapView和MapController。主要想法是使MVC模式中的View成爲共享對象。從NIB加載/創建GeoLocation的視圖 - IOS和MapKit
- 的MapView有IBOutlet中的MKMapView 「的MapView」 位於MapNib.xib
- MapController包含財產 「的MapView」 引用類的MapView
然後我嘗試設置從控制器的MKMapView的一些性質和無論如何它不會對此作出反應。例如我嘗試在MapController:
self.mapView.mapView.showUserLocation = YES; // does not show blue point ...
的MapView類:
@interface MapView : UIViewController
@property (nonatomic, retain) IBOutlet MKMapView *mapView;
...
//UINib *view = [UINib nibWithNibName:@"MapView" bundle:nil];
//[view instantiateWithOwner:self options:nil];
@end
MapController類:
@interface MapController : UIViewController<
CLLocationManagerDelegate,
MKMapViewDelegate>
@property (nonatomic, retain) MapModel *mapModel;
@property (nonatomic, retain) MapView *mapView;
...
- (void)viewDidLoad
{
[super viewDidLoad];
self.mapView = [[[MapView alloc] init] autorelease];
self.mapView.mapView.showsUserLocation = YES;
} @end
我試圖讓MapView類的UIView,UINib,的UIViewController的一個子類,試圖直接使用UINib :: nibWithNibName,UIViewController :: initWithNibName,UIViewController :: loadNibNamed加載NIB - 沒關係... 我可以看到地圖,但是藍色的poi nt反正也沒有顯示 ...爲什麼? 只有一種組合適合我 - 將NIB命名爲與控制器(MapController.xib)相同的方式,併爲MKMapView添加出口作爲控制器屬性... 似乎無法在一個類中加載NIB/View並使用它在另一個,我是對的?
不知怎的,這工作得很好:
@interface MapController : UIViewController
@property (nonatomic, retain) IBOutlet MKMapView *mapView; // NIB was renamed to MapController.xib
...
@end
然後在控制器:
self.mapView.showUserLocation = YES; // now this shows blue dot ... why???
謝謝,藝術
它是有道理的,但我不明白我在哪裏初始化一個IBOutlet?我只分配我的自定義類稱爲「MapView」,它有IBOutlet,我不接觸...或者我錯了嗎?你的意思是說,如果我啓動我的班,這導致爲其IBOutlet分配內存呢? – Anonymous