-3

在我的应用程序中,我试图访问在一个类 (ClassC) 中设置的变量,然后向 ClassA 弹出 2 个视图,并且该视图 (ClassA) 需要访问在 ClassC 中设置的该变量。让我们看看我是否可以更清楚一点:

我的 ClassC 中的一个按钮调用此方法:

-(IBAction) mapItBtn:(id)sender
{
    MapAnnotation* target = [[MapAnnotation alloc] initWithTitle:building.Name subTitle:@"" Coordinate:CLLocationCoordinate2DMake(building.Latitude, building.Longitude)];

    DIRlat = building.Latitude;
    DIRlon = building.Longitude;

    [mapUI removeAnnotations:mapUI.annotations];
    [mapUI addAnnotation:target];
    [mapUI selectAnnotation:target animated:YES];
    [[mapUI viewForAnnotation:target] setCanShowCallout:YES];

    MKCoordinateRegion region;
    region.center=target.coordinate;
    region.span.latitudeDelta=mapUI.region.span.latitudeDelta;
    region.span.longitudeDelta=mapUI.region.span.longitudeDelta;

    [mapUI setRegion:region animated:TRUE];

    [mapUI setHidden:NO];

    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:(self.navigationController.viewControllers.count - 3)] animated:YES];
 }

一旦最后一行完成并且应用程序popsToViewController:...objectAtIndex:...-3,该视图 (ClassA) 需要访问ClassC中的DIRlat和的值。DIRlon类导入结构是 ClassA 导入 ClassB,后者导入 ClassC。

任何关于如何最好地完成这项任务的建议将不胜感激!

谢谢!

编辑:我尝试过的事情,但没有成功:

在 ClassA 中创建一个变量,然后在 ClassC 中我有@implementation ClassAand @synthesize AVariable,但是这导致了一个 Parse 问题,其中 ClassA 导致将 ClassB 读取为未知类型。

上述代码的相反动作,如在 ClassC 中创建变量,然后@implementation ClassC在 ClassA 中。这导致了循环依赖(Mach-O 链接器错误)。

我目前正在尝试完成的事情是制作一个单例类,但是由于我没有这方面的经验,所以进展缓慢。

4

1 回答 1

0

回答:通过按照此处找到的指南创建单例类解决了我的问题。

编辑:显示代码解决方案:

MKLocationManagerSingleton.h

#import <Foundation/Foundation.h>

@interface MKLocationManagerSingleton : NSObject {
    double MKlat;
    double MKlon;
}
@property (nonatomic, readwrite) double MKlat;
@property (nonatomic, readwrite) double MKlon;
+ (id)sharedManager;
@end

MKLocationManagerSingleton.m

#import "MKLocationManagerSingleton.h"
@implementation MKLocationManagerSingleton
@synthesize MKlat, MKlon;
#pragma mark Singleton Methods

+ (id)sharedManager {
    static MKLocationManagerSingleton *sharedMKLocationManagerSingleton = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
    sharedMKLocationManagerSingleton = [[self alloc] init];
    });
    return sharedMKLocationManagerSingleton;
}

- (id)init {
    if (self = [super init]) {
    }
    return self;
}

- (void)dealloc {   
}
@end

并要求 MKlat 和 MKlon 的值:

MKLocationManager *sharedManager = [MKLocationManager sharedManager];
destination.latitude = sharedManager.MKlat;
destination.longitude = sharedManager.MKlon;
于 2013-08-01T20:42:31.770 回答