почему я иногда теряю элементы навигации при нажатии для возврата к предыдущему экрану в приложении UINavigationController?

#iphone #ios #uitableview #uinavigationcontroller

#iPhone #iOS #uitableview #uinavigationcontroller

Вопрос:

Кто-нибудь знает, почему я иногда теряю элементы навигации при нажатии для возврата к предыдущему экрану в приложении UINavigationController?

Фон:

  • есть приложение для iPhone, использующее UINavigationController и UITableViews
  • в 98% случаев все в порядке, и если я нахожусь на подробном экране и нажимаю кнопку «Назад», все найдено. Приложение возвращает вас к главному экрану (всплывающее окно из стека)
  • в небольшом проценте случаев, и на самом устройстве iPhone, я нажимаю, чтобы вернуться, вижу, как запускается анимация, но в итоге я оказываюсь (а) на той же странице, и (б) кнопки навигации или панели инструментов не отображаются
  • из этого состояния вы, очевидно, ничего не можете сделать и должны закрыть приложение и перезапустить

Есть идеи? Как найти ошибку? (я замечаю, что это происходит лишь изредка при тестировании на реальном устройстве, и это может занять часы / дни, прежде чем это произойдет)

Спасибо

Ответ №1:

Добавьте оповещение в функцию didReceiveMemoryWarning ViewController. ОС вызывает viewDidUnload при некотором предупреждении о памяти (чего обычно не происходит в симуляторе).

Комментарии:

1. привет, Гэри — так ты думаешь, такое предупреждение о памяти может вызвать «забавное» поведение в приложении? т. Е. IOS не позволила бы приложению нормально функционировать или не отключила бы его, если это необходимо? (Я предполагаю, что здесь я имею в виду, я не уверен)

2. Я видел нечто подобное, когда использовал MKMapView, где моя кнопка панели для IntelligentSplitViewController исчезла при возникновении предупреждения о памяти и снова появилась при переключении ориентации. В любом случае, это просто идея, которую вам стоит попробовать. Я не могу однозначно сказать, что у вас такая же проблема.

3. итак, действительно ли добавление предупреждения помогло устранить проблему, Гэри, или, по крайней мере, позволить пользователю узнать, что происходит, и им следует переключить ориентацию? вы когда-нибудь устраняли основную причину?

4. Я фактически прекратил использовать IntelligentSplitViewController, поскольку Apple в любом случае не рекомендует использовать splitViewController в панели вкладок. Это совсем другая история. 🙂

5. Вы можете попробовать следующий код для имитации предупреждения о памяти в симуляторе. gist.github.com/956403