У меня есть проблема с доступом к NSString
из другого класса, потому что он всегда возвращается как (null)
. В настоящее время у меня есть два контроллера вида, у первого есть координаты пользователей, а у второго есть MKMapView
, которые показывают текущую позицию пользователя на карте с помощью булавки. Проблема в том, что я хочу, чтобы штырь отображал координаты позиции пользователя в его субтитрах, но значение latitudeString
всегда (null)
, но только на другом ViewController
, потому что на первом latitudeString
отобразите значение широты правильно.NSString возвращает (null) при доступе из другого класса
Вот код:
ViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController : UIViewController <CLLocationManagerDelegate>
{
}
@property (strong, nonatomic) NSString *latitudeString;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController()
{
}
@property (strong, nonatomic) CLLocationManager *locationManager;
@end
@implementation ViewController
{
CLLocation *newLocation;
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
newLocation = [locations lastObject];
self.latitudeString = [NSString stringWithFormat:@"%g\u00B0", newLocation.coordinate.latitude];
}
@end
MapViewController.h
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface MapViewController : UIViewController <MKMapViewDelegate>
{
ViewController *firstViewController;
}
@property (strong, nonatomic) ViewController *firstViewController;
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
@end
MapViewController.m
#import "MapViewController.h"
#import "ViewController.h"
@interface MapViewController()
{
}
@end
@implementation MapViewController
- (void)viewDidLoad
{
self.mapView.showsUserLocation = YES;
self.mapView.delegate = self;
self.mapView.mapType = MKMapTypeHybrid;
self.mapView.userLocation.title = @"Posizione attuale";
firstViewController = [[ViewController alloc] init];
self.mapView.userLocation.subtitle = [NSString stringWithFormat:@"%@", firstViewController.latitudeString]; // Nil
[super viewDidLoad];
}
@end
Может кто-нибудь помочь мне с этой проблемой? Благодарю.
Я чувствую, что в последнее время я видел подобную тему. Я предполагаю, что это «Невозможно получить доступ к NSString другого класса». –
Где ваш экземпляр 'CLLocationManager' в первом контроллере представления был инициализирован и начал обновлять местоположения? – Zen
Вы назначаете новый экземпляр 'ViewController'. –