Уволить или уничтожить все контроллеры представления, листы действий и т. Д.? - PullRequest
1 голос
/ 03 ноября 2010

Я реализую пользовательскую схему URL в своем приложении на основе навигации, чтобы позволить пользователям импортировать данные из электронной почты, и поэтому у меня есть этот метод в моем делегате приложения:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

Было бы хорошо, если бы после импорта данных в этом методе я мог бы использовать popToRootViewController, чтобы вернуться к rootViewController, чтобы показать пользователю новые данные.

Однако это не работает, если пользователь импортировал данные, когда контроллер модального представления или лист действий были активны (popToRootViewController не отклоняет их и вызывает зависание приложения).

Можно ли как-нибудь безопасно отключить / уничтожить все контроллеры представления / листы действий / представления предупреждений, кроме rootViewController?

Или, может быть, какой-нибудь способ узнать из моего делегата приложения, есть ли у пользователя лист действий или контроллер модального вида?

Или я просто оставляю их там, где они остановились, и не предоставляю никаких непосредственных указаний на то, что данные были успешно добавлены?

1 Ответ

1 голос
/ 03 ноября 2010

Вам придется следить за ними самостоятельно.Самый простой способ сделать это - публиковать уведомление со ссылкой на модальное представление / лист / предупреждение в словаре userinfo каждый раз, когда вы отображаете что-то модальное.Когда возвращается модальное представление, публикуйте другое уведомление.

Соблюдайте уведомления в делегате приложения (или там, где это имеет смысл, но делегат приложения является самым простым).Когда вы получите первое, сохраните (слабую) ссылку на модальное представление и обнулите ссылку, когда вы получите второе.В промежутке вы сможете ответить на -application:handleOpenURL:, отклонив модальное представление, если ваша ссылка не равна нулю.

Обратите также внимание, что в случае предупреждений, вероятно, лучше отклонить их, когда вывведите фон.Недели могут пройти до того, как вы снова станете предоплатой, и это плохой стиль, чтобы приветствовать пользователя «Вы уверены? ОК / Отмена», когда они могут больше не понимать, о чем вы спрашиваете.

...