Добавьте указатель к PresidentAddController
таким образом:
// in @interface
PresidentsViewController *listController;
@property (nonatomic, assign) PresidentsViewController *listController;
// in @implementation
@synthesize listController;
Затем, когда вы создаете экземпляр PresidentAddController
, установите указатель:
PresidentAddController *childController =
[[PresidentAddController alloc]
initWithStyle:UITableViewStyleGrouped];
childController.title = @"Add President";
childController.listController = self;
[self.navigationController pushViewController:childController animated:YES];
[childController release];
Итак, вы можете перейти [listController.list addObject:newPresident];
in PresidentAddController
.
EDIT: childController.listController = self
вызывает [childController setListController:self]
, что, в свою очередь, читает метод @synthesize
d в вашей реализации и устанавливает указатель *listController
вукажите текущий класс (если вы пишете код в классе PresidentsViewController
, то self
будет текущим экземпляром PresidentsViewController
).
Причина, по которой я использую assign
потому что если вы используете retain
, то когда вы установите listController
в self
, он фактически сохранит ссылку на объект-владельца.Это может вызвать всевозможные проблемы, если вы когда-нибудь попытаетесь освободить PresidentsViewController
, потому что если у вас есть ссылка-владелец в PresidentAddController
, она не будет освобождена до тех пор, пока эта ссылка также не будет освобождена.Использование assign
гарантирует, что если вы когда-нибудь отпустите PresidentsViewController
до того, как PresidentAddController
исчезнет, он будет должным образом освобожден.Конечно, может быть, вы захотите сохранить это в такой ситуации, и в этом случае использование retain
здесь тоже хорошо.