Laden/maken van views van NIB voor GeoLocation - IOS en MapKit

Ik heb twee klassen - MapView en MapController. Het belangrijkste idee is om View a shared object in MVC-pattern te maken.

  1. MapView heeft IBOutlet "mapView" voor MKMapView in MapNib.xib
  2. MapController bevat eigenschap "mapView" met verwijzing naar klasse MapView

Dan probeer ik sommige eigenschappen van MKMapView van controller in te stellen en het reageert hier toch niet op. Ik probeer het bijvoorbeeld in MapController:

self.mapView.mapView.showUserLocation = YES;//does not show blue point ...

MapView-klasse:

@interface MapView : UIViewController

@property (nonatomic, retain) IBOutlet MKMapView *mapView;

...

//UINib *view = [UINib nibWithNibName:@"MapView" bundle:nil];
//[view instantiateWithOwner:self options:nil];

@end

MapController Class:

@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

I tried to make MapView a subclass of UIView, UINib, UIViewcontroller, tried to load NIB directly using UINib::nibWithNibName, UIViewController::initWithNibName, UIViewController::loadNibNamed - it does not matter ... i can see the map but blue point is not shown anyway ... why??? Only one combination works for me - to name NIB the same way as controller (MapController.xib) and add outlet for MKMapView as controller property ... it seems like it is impossible to load NIB/View in one class and use it in another, am i right?

Op de een of andere manier werkt dit prima:

@interface MapController : UIViewController

@property (nonatomic, retain) IBOutlet MKMapView *mapView; //NIB was renamed to MapController.xib

...

@end

En dan in controller:

self.mapView.showUserLocation = YES;//now this shows blue dot ... why???

Bedankt, art

0

1 antwoord

IBOutlets hoeven niet te worden gemaakt. De NIB maakt ze aan en wijst ze toe aan je vars, je overschrijft het door een nieuwe mapview toe te wijzen en te starten en op te slaan in die variabele

1
toegevoegd
Het is logisch ... hoewel ik niet begrijp waar ik precies een IBOutlet begin? Ik schrijf alleen mijn aangepaste klasse genaamd "MapView" toe en deze heeft IBOutlet die ik NIET aanraak ... of heb ik het mis? Bedoel je dat als ik mijn klas begin dit ook geheugen toewijst voor zijn IBOutlet?
toegevoegd de auteur Anonymous, de bron