В моем приложении, основанном на навигации, есть кнопка, которая при нажатии изменит представление на detailViewController. Здесь пользователь может установить несколько параметров. Одним из таких опций является значение bool. Когда я вернусь из detailViewController, как я могу узнать, что это за значение bool?Каков наилучший способ получить значение bool от элемента detailViewController?
ответ
Создайте protocol (DetailViewDelegate
?) И создайте объект delegate в вашем DetailViewController
. Когда вы создаете экземпляр своего контроллера представления, установите для свойства delegate значение self
и используйте это свойство для отправки сообщений обратно в контроллер основного вида. Единственная сложная часть заключается в том, что вам нужно объявить свойство delegate как «назначить», чтобы вы не создавали цикл сохранения между вашим подробным представлением и основным видом.
DetailViewController.h:
@class DetailViewController; // Forward Declaration.
@protocol DetailViewDelegate
- (void)detailViewController:(DetailViewController *)controller didChangeBool:(BOOL)theBool;
@end
@interface DetailViewController : UIViewController {
id <DetailViewDelegate> delegate;
}
@property (assign) id <DetailViewDelegate> delegate;
@end
Вот только интерфейс, но вы должны получить большую часть пути туда. Задайте свойство delegate
с детальным представлением и реализуйте метод detailViewController:didChangeBool:
в вашем основном представлении, и это все.
Чтобы ответить на вопросы в своем комментарии:
- Да. Перед тем, как вы нажмете регулятор контроллера детали, его значение
delegate
-self
. - Вам необходимо объявить, что ваш главный контроллер просмотра реализует протокол DetailViewDelegate. Узнайте, как это сделать, прочитав Apple's Documentation.
- После того, как вы заявите, что ваш мастер-контроллер будет реализовывать протокол, вам необходимо его реализовать. Добавьте метод
detailViewController:didChangeBool:
к вашему контроллеру главного представления.
- 1. Каков наилучший способ получить ценность от DataRow?
- 2. Каков наилучший способ получить значение моего элемента управления в OnInit()?
- 3. Каков наилучший способ получить логическое значение выражения?
- 4. Каков наилучший способ получить ключи от IreliableDictionary
- 5. Каков наилучший способ получить номер от пользователя?
- 6. Каков наилучший способ распечатать значение элемента HTML при тестировании/разработке?
- 7. Каков наилучший способ получить имя тега элемента в JS?
- 8. Каков наилучший способ получить индекс элемента внутри массива 2d?
- 9. Каков наилучший способ использования Webservice от android?
- 10. Каков наилучший способ получить местоположение посетителя сайта?
- 11. Symfony2: Каков наилучший способ получить корневую директорию?
- 12. Каков наилучший способ получить подстроку массива строк?
- 13. Каков наилучший способ получить короткую версию статьи?
- 14. Каков наилучший способ получить ряд результатов?
- 15. Каков наилучший способ угадать значение x + y?
- 16. Каков наилучший способ защиты от DDOS-атак?
- 17. Каков наилучший способ отключить событие щелчка от
- 18. VB.NET: Каков наилучший способ получить значение из второй формы?
- 19. Каков наилучший способ получить значение атрибута с отражением в Java
- 20. Каков наилучший способ получить значение атрибута метаэлемента в JS?
- 21. Каков наилучший способ получить значение attrubute в strings.xml?
- 22. Каков наилучший способ получить базовый URL-адрес от контроллера
- 23. Каков наилучший способ получить прогресс от статического не-Android-класса?
- 24. Каков наилучший способ получить сегодняшние задания от Асаны?
- 25. Каков наилучший способ получить матрицу n * n от пользователя (консоли)?
- 26. Каков наилучший способ получить поддержку от разработчиков микрософт
- 27. Каков наилучший способ получить данные о дате/времени от пользователя?
- 28. Каков наилучший способ получить объект json от веб-контроллера?
- 29. Каков наилучший способ получить информацию от Sphinx (в PHP)?
- 30. Каков наилучший способ увеличения?
Можете ли вы показать какой-то код о том, как это сделать? –
Какова цель этой второй строки? Это действительно необходимо? Я получаю сообщение об ошибке «Ожидаемое») «до detailViewController». –
Это не обязательно. Он объявляет формальный интерфейс для вашего объекта делегирования. Если у вас нет веских причин его удалить, вы должны оставить его в качестве отладки помогите, это гарантирует, что ваш делегат реализует все методы, которые, по вашему мнению, будут реализованы. Я отредактировал код, чтобы предупредить его. – kubi