У меня есть два класса - MapView и MapController.Основная идея заключается в том, чтобы сделать View общим объектом в шаблоне MVC.
- В MapView есть IBOutlet "mapView" для MKMapView, расположенный в 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, пытался загрузить NIB напрямую, используя UINib :: nibWithNibName, UIViewController :: initWithNibName, UIViewController :: loadNibNamed - это не имеет значения ... я вижу карту, но синяя точка не отображается в любом случае ... Зачем???У меня работает только одна комбинация - назвать 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???
Спасибо, Art