2013-08-01 35 views
-3

在我的應用程序中,我試圖訪問在一個類(ClassC)中設置的變量,然後將2個視圖彈出到ClassA,並且該視圖(ClassA),需要訪問ClassC中設置的變量。讓我們來看看,如果我可以讓這個更清晰了:Objective-C:訪問另一個類中的變量

在我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中的DIRlatDIRlon的值。類導入結構是ClassA導入ClassB,它導入ClassC。

如何最好地完成這項任務的任何建議將非常感激!

謝謝!

編輯:事我已經試過了,都沒有成功:

創建的ClassA的一個變量,然後在ClassC我有@implementation ClassA@synthesize AVariable,然而,這導致瞭解析問題,即ClassA的導致閱讀ClassB作爲未知類型。

上述代碼的相反操作,如在ClassC中創建變量,然後在ClassA中創建@implementation ClassC。這導致循環依賴(Mach-O鏈接器錯誤)。

我目前試圖完成的事情是做一個單身人士班,但是因爲我沒有經驗,進展緩慢。

+0

這個主題有幾十個問題。從側邊欄開始 - >> –

+0

這就是我在過去幾個小時裏所做的,我嘗試過使用公共變量,'ClassC'中'@implementation ClassA'的各種方式作爲以及'ClassA'中的'@implementation ClassC'。感謝您的建議,我會繼續瀏覽之前的S.O.主題。 – VonKoob

+0

請更明確地告訴你所嘗試的是什麼,爲什麼你認爲這會起作用,什麼出了問題。 –

回答

0

答案:解決我的問題,創建一個單身人士班,遵循指南發現here

編輯:顯示的代碼解決方案:

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;