Apple рекомендует использовать performSegueWithIdentifier:sender:someObject
для программного выполнения сегментов.Есть, по крайней мере, несколько преимуществ для этого:
Меньше вашего собственного кода означает, что вы позволяете платформе выполнять большую часть работы.Если Apple предложит какой-нибудь очень крутой новый визуальный эффект для push-сегментов, или улучшит производительность, или исправит ошибку в каком-либо будущем выпуске iOS, ваше приложение может получить его бесплатно.И каждая строка кода, которую вы пишете для выполнения работы, которую может сделать фреймворк, увеличивает ваши шансы на написание ошибок.
Больше в IB может означать, что легче изменить,Если вы решили, что хотите изменить все свои push-сегменты на модальные сегменты или какой-то другой тип сегмента, в котором вы создаете свой собственный супер-крутой визуальный эффект, вы можете выбрать их все в IB и изменить тип сегмента одним щелчком мыши вместо поискав вашем коде.
Кроме того, используете ли вы первый или второй метод, подталкивая контроллер представления, чтобы «вернуться» к предыдущему контроллеру представления, выиграл »работать так, как ожидают ваши пользователи.Когда вы нажимаете SongViewController
, он добавляется в конец стека навигации:
LocationViewController -> SongViewController
Если вы снова нажимаете LocationViewController
, чтобы вернуться «назад»:
LocationViewController -> SongViewController -> LocationViewController
Если пользователь коснется кнопки «Назад» на панели навигации, он снова перейдет от просмотра местоположения к представлению песни и представлению местоположения.(Кроме того, если вы продолжите делать это, каждый «назад» и «вперед» добавит к постоянно увеличивающейся цепочке контроллеров представления, что может привести к другим проблемам.)
Вместо этого вы должны разрешить навигациюручка контроллера возвращается назад.Для этого он вставляет кнопку в панель навигации, которая должна обрабатывать большинство случаев использования.Если вам нужно сделать свой собственный контроль, чтобы вернуться, вы не можете сделать это в IB с iOS 5, но вы можете сделать это программно с помощью метода popViewControllerAnimated:
контроллера навигации.