У меня есть шоу segue под названием showPage
от контроллера вида до контроллера табличного представления, и я звоню performSegueWithIdentifier()
, чтобы получить его показать после нажатия OK на кнопке в боевой готовности:Встроенная панель навигации исчезает на iOS 7 (размер небольшого экрана), но не iOS 9 (более крупный экран) после выполнения segue
@IBAction func enterManuallyTap(sender: AnyObject) {
var code : String!
if #available(iOS 8.0, *) {
let alert = UIAlertController(title: "Enter code", message: "Please enter code", preferredStyle: UIAlertControllerStyle.Alert)
alert.addTextFieldWithConfigurationHandler({ (input:UITextField) in
input.placeholder = "your code"
});
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { (_) in
barcode = alert.textFields!.first?.text
self.performSegueWithIdentifier("showPage", sender: self)
}))
presentViewController(alert, animated: true, completion: nil)
} else {
let alert = UIAlertView(title: "Enter code", message: "Please enter code", delegate: self, cancelButtonTitle: "Cancel", otherButtonTitles: "OK")
alert.alertViewStyle = UIAlertViewStyle.PlainTextInput
alert.show()
}
}
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
if buttonIndex == 1 {
var code : String!
code = alertView.textFieldAtIndex(0)?.text
self.performSegueWithIdentifier("showPage", sender: self)
}
}
Это все прекрасно работает на моей прошивке 9 устройства, но когда я пытаюсь его на IOS 7 устройства, навигационная панель исчезает, так что я не могу видеть название или нажмите «назад». Поэтому представление таблицы начинается в самой верхней части экрана и переходит в строку состояния.
Я попытался изменить верхнюю панель от inferred
до Translucent Navigation Bar
и установить nagivationBarHidden
ложного
self.navigationController?.navigationBarHidden = false
, но он по-прежнему не появляется на прошивке 7.
Я просто попытался print(self.navigationController)
в viewDidAppear()
для tableviewcontroller и на моем устройстве iOS 7, он печатает nil
, но на моем устройстве iOS 9 отображается контроллер: Optional(<UINavigationController: 0x12504e600>)
! Почему он не существует на более старом устройстве? Я видел, что навигационный контроллер не будет существовать, если у вас модальный сеанс, но я делаю обычный сеанс шоу, и я не понимаю, почему он должен работать на одном устройстве, но не в другом.
Почему это происходит, и почему только на iOS 7 (или устройстве меньшего размера)?
Возможно, это связано с тем, что устройство iOS 9, которое я использую, имеет больший экран? (Это iPhone 6S), но iOS 7 - это iPhone 4, который имеет меньший экран. Как я могу отлаживать это, чтобы проверить, зависит ли это размер экрана? Однако ни одна из ячеек в контроллере табличного представления, к которой идет переход, не обрезается ни на одном из устройств.
Мой раскадровки (нажмите для увеличения изображения):
Проблемный переход является один между контроллером просмотра «Scan» и выберите сканирования контроллера представления.
Вы можете добавить свой снимок экрана своей раскадровки? –
@MihaiFratu конечно, я отредактировал его в вопросе –
Он также может быть связан с моим PageViewController, но все еще не имеет смысла, почему он работает на одном устройстве:/ –