У меня есть модальный UIViewController
, на котором есть UITableView
. Для любой ячейки, которую пользователь выбирает, я хочу вернуть этот текст на предыдущий контроллер представления и отклонить модальное представление. Я использую NSNotifications для отправки значения обратно. Проблема в том, что мое уведомление так и не было получено.NSNotification не возвращается
Вот код, с точки зрения «родительским»:
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(choiceReceived:)
name:@"selectionMade"
object:nil];
[self performSegueWithIdentifier: @"locationsDetailsSegue" sender: self];
}
- (void) choiceReceived: (NSNotification *) notification
{
NSLog(@"test");
NSDictionary *dict = [notification userInfo];
NSString *user_choice = [dict objectForKey:@"choice"];
NSLog(@"%@", user_choice);
[[NSNotificationCenter defaultCenter] removeObserver:self
name: @"selectionMade"
object:nil];
}
И в модальный контроллер представления:
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
NSString *choice = cell.textLabel.text;
// send a notification of this choice back to the 'parent' controller
NSDictionary *dict = [NSDictionary dictionaryWithObject:choice forKey:@"choice"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"selectionMade" object:nil userInfo:dict];
NSLog(@"%@", [dict objectForKey:@"choice"]);
[self dismissViewControllerAnimated:YES completion:nil];
}
я получаю правильный выход из уведомителя, но я не получаю никакого вывода от получателя. Мне что-то не хватает? Благодаря!
Является ли оригинальная VC определенно еще живой, когда уведомление отправлено? –
Является ли реализация родительского представления 'tableView: didSelectRowAtIndexPath:' всегда вызывается перед реализацией контроллера modal view 'tableView: didSelectRowAtIndexPath:' is? Это разные таблицы, верно? – ThomasW
@ JoshCaswell - Я не уверен на 100%. Оригинальный VC называет этот VC модально, поэтому я считаю, что он все еще существует, но я не знаю, как это проверить. Я использую этот шаблон в других ситуациях, и он всегда работает, поэтому я не знаю, почему здесь это не удается. Я думаю, что я рассмотрю шаблон делегата, так как мне все равно нужно это узнать. – Alex