我有两个类 - MapView和MapController。主要思想是使View成为MVC模式中的共享对象。
然后我尝试从控制器设置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 - 没关系... 我可以看到地图但是无论如何都没有显示蓝点 ...为什么??? 只有一个组合适用于我 - 以与控制器(MapController.xib)相同的方式命名NIB,并将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???
谢谢,艺术
答案 0 :(得分:1)
不需要创建IBOutlets。 NIB创建它们并将它们分配给您的vars,您将通过分配和启动新的mapview并将其保存到该变量来覆盖它