0

Я использую UISplitViewController на iPhone 6 Plus, и я хочу получать уведомления, когда в портретном режиме пользователь возвращается к контроллеру Master View (т.е. когда Разделить действует как контроллер навигации).Как получать уведомления о появлении UISplitViewController для управления в режиме iPhone?

Кроме того, я хочу, чтобы получать уведомления в моем UISplitViewDelegate таким же образом, я уже уведомлен, когда пользователь нажимает на контроллер представления детали (черезsplitViewController:showDetailViewController:sender: обратного вызова)

Знаете ли вы самый простой (и надёжным) способом сделать это?

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

+0

У вас есть взгляд на 'splitViewController: willChangeToDisplayMode:' [(Apple Docu)] (https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISplitViewControllerDelegate_protocol/index.html# // apple_ref/occ/intfm/UISplitViewControllerDelegate/splitViewController: willChangeToDisplayMode :)? Насколько я могу судить, этот метод будет называться каждый раз, когда что-либо в презентации меняется ... – luk2302

+0

Спасибо за ваш комментарий, но на самом деле этот метод вызывается только при изменении режима отображения (автоматический, основной скрытый, все видимый и т. Д.), А не когда пользователь переходит. К сожалению, я хочу получить уведомление, когда пользователь в режиме iPhone возвращается к контроллеру главного представления ... – Zaphod

ответ

0

В зависимости от того, какую версию iOS мы пытаемся сделать.

IOS 8,0 ~ 8,2 путь ваш проект не должен быть совместим с прошивкой 7 и будет работать только IOS 8 и UP лучший способ заключается в использовании размерных классов (коллекции Trait) представлены на WWDC 2014 и там было видео о таким образом, сессия 214 "View Controller Выдвижения в прошивкой 8"

Кратко теперь имеет свойство Это свойство указывает, если свернут вид детали (Session 214 минут 12:30 ->).

@property (getter = isCollapsed) BOOL рухнул; Немного волшебства KVO, и вы можете иметь обратный вызов, когда доступно подробное представление.

Для старого iOS 7-way вы можете определить текущую ориентацию устройства и получить текущее состояние вашей детали.

методы Пара (вращение обратных вызовов) у вас есть:

willRotateToInterfaceOrientation: продолжительность:

didRotateFromInterfaceOrientation:

interfaceOrientation

!!! НА ОСНОВЕ Сессии 214 (43:20) не рекомендуется использовать эти методы с iOS 8 и UP, потому что они устарели !!!

Я не уверен, что этот способ является лучшим и легким, но они работают должным образом, как ожидалось. И мало советов, чтобы смотреть видео в WWDC, они очень полезны.

+0

Спасибо за ответ, к сожалению, я не хочу знать, что SplitView рухнул или нет. Моя проблема заключается в том, что разделенное представление находится в режиме телефона (т. Е. Оба представления не находятся рядом, мастер встроен в контроллер навигации): когда пользователь выбирает элемент в главном, он подталкивает контроллер подробного представления в стек навигации (управляемый контроллером splitview). Это событие можно проследить с помощью команды splitViewController: showDetailViewController: sender: 'callback. Но когда пользователь нажимает кнопку «Назад», то есть когда мастер отображается снова, я хочу получать уведомление. – Zaphod

+0

Хм, могу я вас спросить? Что ты хочешь делать? Я имею в виду, хорошо, давайте притвориться, что вы поймаете обратный вызов, когда мастер нажимает детали в стеке навигации. Какой следующий шаг? –

+0

На iPhone 6 + (единственное с реальным разделением в ландшафте и навигация в портрете) Мне нужно помнить, какой вид рушится, когда пользователь переключает ориентации. Для этого я использую callback 'splitViewController: collapseSecondaryViewController: onPrimaryViewController:', в котором я возвращаю, был ли последний отображаемый контроллер отображения деталями или мастером. Поэтому я уже знаю, когда деталь нажата, но я не могу понять, когда она возвращается к мастеру. И поскольку это в родовом классе, я не могу использовать какой-то грязный трюк в 'viewWillAppear:' мастера ... Понимаете? – Zaphod

0

Чтобы получать уведомление о возврате MasterViewController, вам необходимо создать делегат и установить его на DetailViewController, например, в performSegueWithIdentifier.

Если это так, когда вы вернетесь к мастеру, делегат будет уволен.