在我的应用程序中,我试图访问在一个类(ClassC)中设置的变量,然后将2个视图弹出到ClassA,并且该视图(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 ClassA
和@synthesize AVariable
,但是这导致了Parse问题,其中ClassA导致将ClassB读作未知类型。
上述代码的相反操作,如在ClassC中创建变量,然后在ClassA中创建@implementation ClassC
。这导致循环依赖(Mach-O链接器错误)。
我目前要完成的事情是制作单身课程,但由于我没有经验,所以进展缓慢。
答案 0 :(得分:0)
答案:按照找到here的指南创建Singleton类解决了我的问题。
修改:显示代码解决方案:
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;