Что вы хотите сделать, это добавить свойство Какао в ваш контроллер основного представления, которое ссылается на экземпляры объектов, которые вы хотите использовать совместно с подчиненными контроллерами представления.
Например, если мы хотим поделиться NSArray
, мы указываем его свойство в заголовке контроллера основного вида:
@interface MainViewController : UIViewController {
NSArray *myArray;
}
@property (nonatomic, retain) NSArray *myArray;
@end
В реализации добавьте директиву @synthesize
и запомните release
массив в -dealloc
:
@implementation MainViewController
@synthesize myArray;
...
- (void) dealloc {
[myArray release];
[super dealloc];
}
@end
Вы также хотите добавить это свойство для просмотра контроллеров, которые подчинены контроллеру основного представления, точно таким же образом. В их заголовках укажите то же имя переменной и описание свойства.
В вашем главном контроллере представления, когда вы готовы выдвинуть подчиненный контроллер представления, вы соответственно устанавливаете свойство подчиненного контроллера представления непосредственно перед нажатием:
- (void) pushSubordinateViewController {
SubordinateViewController *subVC = [[SubordinateViewController alloc] initWithNibName:@"SubordinateViewController" bundle:nil];
subVC.myArray = self.myArray; // this sets the sub view controller's myArray property
[self.navigationController pushViewController:subVC animated:YES];
[subVC release];
}
Аналогично, в вашем подчиненном контроллере представления он должен будет соответствующим образом установить свойство массива подчиненного, непосредственно перед тем, как он выдвинет собственный контроллер подчиненного представления.
Устанавливая ссылки таким образом, каждый контроллер представления указывается на один и тот же массив, содержащий нужные элементы.
Чтобы использовать массив, просто позвоните self.myArray
, например, [self.myArray objectAtIndex:index]
чтобы получить объект по заданному индексу.