Когда я открываю пользовательский UIView из UITableViewController, как мне закрыть настраиваемое представление и вернуться к представлению таблицы?
-
06-07-2019 - |
Вопрос
я использую UITableViewController
для меню в игре.Представление таблицы открывает контроллер представления для моего пользовательского UIView
это показывает игру.Когда игра закончится UIView
получает уведомление (что своего рода разрушает принципы MVC), и оттуда я как бы теряюсь.
Вопросы:
- Может ли
UIView
общаться со своим контроллером?Как? - Может ли один контроллер поговорить с тем, кто его запустил?Как?
- Как мне изящно перейти между всей этой сложной сетью представлений и контроллеров?
Решение
Используйте здесь протокол делегата.Ваш пользовательский UIView игры может использовать
delegate
свойство и методы вызова этого делегата при возникновении событий (игра окончена, игра приостановлена, просмотр закрыт и т. д.).Вот отличный пост об использовании делегатов: Как создать делегатов в Objective-C?Я бы рекомендовал использовать UINavigationController.Вам не обязательно показывать панель навигации, но если вы вложите контроллеры представления в контроллер навигации, у вас будет доступ к
-pushViewControllerAnimated:
и-popViewControllerAnimated:
которые упрощают навигацию между уровнями вложенных контроллеров представления.Еще одно преимущество UINavigationController — вы получите красивую анимацию слайдов при переключении между представлениями.
Существуют и другие сторонние механизмы, которые вы можете предпочесть механизмам UIKit UINavigationController/UIViewController.Проверьте Проект Три20, в частности класс TTNavigationCenter.