iOS всплывающие окна как учебник меню - PullRequest
1 голос
/ 15 февраля 2012

Я пишу приложение для iPad и очень плохо знаком с задачей C. В настоящее время я пытаюсь использовать всплывающее окно в качестве меню в контроллере представления.Я понимаю, как настроить всплывающее окно и иметь табличное представление для него, чтобы пользователь мог выбрать элемент из.Однако я не уверен, как затем передать информацию обратно в контейнер, который содержит всплывающее окно.didSelectRowAtIndexPath будет вызываться в пределах UITableViewController, который предположительно находится внутри контроллера поповерного представления.Может ли кто-нибудь указать мне правильное направление для получения этой информации обратно в контейнер?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 15 февраля 2012

Вам необходимо использовать делегат. Это очень часто используемый шаблон в этой ситуации. У меня есть ответ на этот SO аналогичный вопрос с примером. Дайте мне знать, если после этого вам все еще не ясно.

0 голосов
/ 12 мая 2012

Я также ищу ответ на эту проблему.Я решил ее с помощью NSNotification.

Вот как:

Контроллер представления, отображающий всплывающее окно, должен зарегистрироваться для получения уведомления:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageSetup) name:SPVWChangeLanguage object:nil];

// languageSetup - этофункция, которая будет вызываться, SPVWChangeLanguage - это строка, которую вы определите в своем контроллере всплывающих окон

Я добавил эту строку в viewDidAppear

Теперь в вашем контроллере всплывающих окон добавьте эту строкукогда пользователь выбирает что-то в таблице:

[[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName: SPVWChangeLanguage object:self]];

перед тем, как закрыть всплывающее окно:

[self.popOverController dismissPopoverAnimated:YES];

Вот и все.Будет вызван селектор languageSetup (в моем случае).Обязательно удалите уведомление, когда ваш контроллер представления исчезнет:

[[NSNotificationCenter defaultCenter] removeObserver:self];

Я делаю это в viewWillDisappear

Я думаю, что должен быть более простой способ.Но, по крайней мере, этот работает для меня.

0 голосов
/ 15 февраля 2012

Хорошо, я предполагаю, что делегатом вашего UIPopoverController является ваше представление контента, если это так, вы можете запросить свойство parentViewController у UITableView, а затем привести его к UIPopoverController, чтобы получить его делегат (в вашем случае делегатом будет представление контейнера).

...