UINavigationControllers: как передать значение в вышестоящий (родительский) контроллер в стеке? - PullRequest
0 голосов
/ 23 июля 2011

У меня есть SendingController, который отправляет в стек SendingDeatilsController (у которого есть TableView). Пользователь должен выбрать в TableView одну строку (это проверено галочкой), и я хотел бы передать значение этой строки (пусть это будет объект NSString) в SendingController.

Как я могу реализовать это поведение в моем приложении? И является ли SendingController родительским для SendingDetailController (атрибут parentController SDC относится к SC) ??

Ответы [ 2 ]

1 голос
/ 23 июля 2011

Если вы хотите реализовать это поведение, передайте ссылку SendingDetailController на предыдущий контроллер представления.Таким образом контроллер подробного представления может отправить сообщение предыдущему в стеке.

В вашем SendingDetailController определите слабую ссылку:

// in .h
SendingController *sendingController;
@property(assign) SendingController *sendingController;

// in .m
@synthesize sendingController;

-(void)tableView:(UITableView *)tableView
 didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // retrieve the string and send the message
    [sendingController didSelectString:theString];
}

Теперь перед нажатием SendingDetailControllerв стеке не забудьте установить его sendingController свойство.

// .m
// where you push the vc
if(!sendingDetailController) {
    sendingDetailController = [[SendingDetailController alloc]
                               initWithNibName:@"TheNIBName"
                                        bundle:nil];
    sendingDetailController.sendingController = self;
}
[self.navigationController pushViewController:sendingDetailController
                                     animated:YES];

и написать метод, который получит строку.

-(void)didSelectString:(NSString *)aString {
    // do anything with string
    [self.navigationController popViewControllerAnimated:YES];
}

Это должно сделать работу.

0 голосов
/ 23 июля 2011

Для легкой асинхронной связи между различными UIViewControllers, вы можете посмотреть NSNotification и NSNotificationCenter .

В Интернете есть множество учебных пособий и несколько хороших ответов.здесь, в SO, который может показать вам, как именно это сделать.

...