2010-01-18 22 views
1

我有一個數組arryImages,我只想聲明一次,並從一些視圖控制器訪問它,但我不知道在哪裏放置它。iphone dev創建一個數組訪問從一些視圖控制器

我有一個單獨的類(Variables.m),其包含以下代碼

@implementation Variables 

//images array 
arryImages = [NSArray arrayWithObjects: 
       [UIImage imageNamed: @"ico-company.png"], 
       [UIImage imageNamed: @"ico-value.png"], 
       [UIImage imageNamed: @"ico-date.png"], 
       [UIImage imageNamed: @"ico-notes.png"], nil]; 

@end 

以我的ViewController類(我要訪問的數組)我已經加入:

#import "Variables.h" 

我試着玩@synthesize,但是我不能訪問數組arrayImages。

(使用調用imageView2.image = [arryImages objectAtIndex:[indexPath row]];)ps。當它剛好在代碼之上時,這個工作是完美的,但不是在一個單獨的類中。

我錯過了什麼?

Regards

回答

1

你應該聲明你的數組是屬性。在你的ViewDidLoad方法中合成並初始化。

即頭

@interface AddFriendViewController : UIViewController { 
NSArray *arryImages; 
} 

@property (nonatomic, retain) NSarray *arryImages ; 

@end 

實現:

@synthesize arryImages; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    arryImages = [NSArray arrayWithObjects: 
      [UIImage imageNamed: @"ico-company.png"], 
      [UIImage imageNamed: @"ico-value.png"], 
      [UIImage imageNamed: @"ico-date.png"], 
      [UIImage imageNamed: @"ico-notes.png"], nil]; 
} 

如果你想分享的觀點之間的變量,你應該把你的應用程序委託和訪問它從那裏。

NSArray *arryImages = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] arryImages]; 
+0

我仍然試圖弄清楚你的意思。我希望這可以從衆多的視圖控制器中工作。 你是說第一個標題應該在appdelegate和第二個ViewDidLoad位?在我應該創建它?我只有applicationDidFinishStarting 然後第三個代碼進入視圖控制器我想訪問arryImages? 例如,讓我們說的視圖控制器我想要訪問arryImages是: DetailViewController.m 和 EditViewController.m 和我只想要一次聲明數組。 什麼代碼去哪裏? Regards – oberbaum 2010-01-18 15:10:45

+0

你在你的AppDelegate Header中聲明你的NSArray,init並將其填充到你的AppDelegate實現中,並通過使用上面發佈的代碼來訪問它:「NSArray * arryImages = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] arryImages ];」 – 2010-01-18 15:26:22

+0

並且是:它不是viewdidload,而是applicationDidFinish在您的應用程序委託中啓動。 – 2010-01-18 15:29:05

相關問題