2011-10-07 2 views
0

Можно создать дубликат:
IOS: call a method in another classДоступ NSArray из другого класса

Как я могу передать NSArray объект в другой класс? Я не хочу использовать extern для доступа к нему, так есть ли другой способ, которым я мог бы это сделать?

Также обратите внимание, что я новичок

ответ

2

В этом примере tableDataSource является NSArray, который может быть доступен как свойство класса.

В вашей interface декларации (iPadTableWithDetailsViewController.h):

@interface iPadTableWithDetailsViewController : UIViewController { 
    NSArray *tableDataSource; 
} 

@property (nonatomic, retain) NSArray *tableDataSource; 

Тогда в вашем implementation определении (iPadTableWithDetailsViewController.m):

#import "iPadTableWithDetailsViewController.h" 

@implementation iPadTableWithDetailsViewController 

@synthesize tableDataSource; 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
     self.tableDataSource = nil; 
    } 
    return self; 
} 

- (void)viewDidLoad { 
    if (!tableDataSource) { 
     self.tableDataSource = [NSArray array]; 
    } 
} 

..... 

@end 

И тогда вы можете получить доступ к этому из другого класса, как это:

- (void)doSomething { 
    iPadTableWithDetailsViewController *myViewController = [[iPadTableWithDetailsViewController alloc] initWithNibName:@"iPadTableWithDetailsViewController" bundle:nil]; 
    myViewController.tableDataSource = [NSArray arrayWithObjects:@"object1", @"object2", nil]; 
    NSLog(@"myViewController.tableDataSource: %@", [myViewController.tableDataSource description]; 
} 

Подробнее g ООД информация и примеры:

Properties in Objective-C
Tutorial: Using Properties in Objective-C
cocoadevcentral learn objective-c

+0

Что делает этот метод делать '- (ID) initWithNibName: (NSString *) nibNameOrNil расслоение: (NSBundle *) nibBundleOrNil'? – Dexter

+1

Инициализирует пользовательский подкласс 'UIViewController'. Я предлагаю вам создать шаблонный проект в Xcode и прочитать комментарии и примеры, там есть много хорошей информации. – chown

Смежные вопросы