2017-01-05 5 views
4

ビューコントローラからテーブルビューコントローラへshowPageというショーセグがあり、performSegueWithIdentifier()警戒中ボタンで[OK]をクリックした後ショー:埋め込みナビゲーションバーは、iOS 7(小さい画面サイズ)では表示されませんが、iOS 9では表示されません(画面が大きくなると)

@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) 
    } 
} 

このすべては私のiOSに完全に9デバイスを動作しますが、私はiOSの7デバイス上でそれをしようとすると、ナビゲーションバーが消えたので、私が見ることができませんタイトルをクリックするか、「戻る」をクリックします。したがって、テーブルビューは画面の最上部から開始され、ステータスバーに表示されます。

私はTranslucent Navigation Barinferredからトップバーを変更しようとした偽

self.navigationController?.navigationBarHidden = false 

nagivationBarHiddenを設定するが、それはまだ

のiOS 7に表示されない、私はちょうどのためviewDidAppear()print(self.navigationController)を試してみました私のiOS 7デバイスではnilと表示されますが、iOS 9デバイスではコントローラーが表示されます:Optional(<UINavigationController: 0x12504e600>)!なぜ古いデバイスに存在しないのですか?私はあなたがモーダルセグを持っていればナビゲーションコントローラーは存在しないが、通常のショーセグをしているのですが、なぜそれが1つのデバイスでは動作するのか、他のデバイスでは動作しないのか理解できません。

なぜこのようなことが起こるのですか、なぜiOS 7(またはそれより小さいサイズのデバイス)のみですか?

これは、私が使用しているiOS 9デバイスの画面サイズが大きいためですか? (これはiPhone 6Sだが)iOS 7のデバイスはiPhone 4で、画面が小さくなっている。画面サイズの問題であるかどうかをチェックするにはどうすればデバッグするのですか?ただし、いずれのデバイスでも、Segueが移動するテーブルビューコントローラ内のセルは決して切り取られません。

マイストーリーボード(大きな画像をクリックしてください):

enter image description here

問題セグエは、「スキャン」ビューコントローラを選択しますスキャンビューコントローラ間の1です。送信者:メソッド

+0

ストーリーボードのスクリーンショットを追加できますか? –

+0

@MihaiFratu確かに、質問に編集しました –

+0

また、私のPageViewControllerに関連するかもしれませんが、なぜそれが1つのデバイスで動作するのか理解できません:/ –

答えて

2

私はこの問題は、(プッシュ)

このセグエは showViewControllerを使用して新しいコンテンツを表示し、あなたのshowSegueshowPage

From apple developer

ショーであると思いますターゲットビューコントローラのほとんどのビューコントローラで の場合、このSegueは新しいコンテンツをモーダルに ソースビューコントローラ上に表示します。いくつかのビューコントローラ、具体的には はメソッドをオーバーライドし、それを使用してさまざまな動作を実装します。 の例では、ナビゲーションコントローラが新しいビューコントローラを のナビゲーションスタックにプッシュします。

あなたの最初のviewControllerStoryboardUINavigationControllerに埋め込まれていることを確認します。最初のviewControllerinitialViewControllerの場合はnavigationControllerinitialViewControllerにしてください。それ以外の場合は、新しいviewControllermodallyを提示することができます。つまり、viewControllerの上にはnavigationBarがありません。私はこれがあなたの場合に起こっていると思います。

また、新しいセグを削除して再作成することもできます。これを参照してください:
'Show' segue in Xcode 6 presents the viewcontroller as a modal in iOS 7

+1

ありがとう!しかし残念なことに、リンクされた質問の解決策は機能しませんでした(私のXMLはすでに有効ですが、削除して読み込みを試みましたが、とにかく何も起こりませんでした)。しかし、[この回答](http://stackoverflow.com/a/26665626/3541881)は、[this one](http://stackoverflow.com/a/27713843/3541881)に導かれ、まったく新しいナビゲーションコントローラを問題のあるviewcontrollerが動作しました! –

+0

私はあなたに恩恵を与えています:)しかし、それは余分なナビゲーションコントローラなしで新しいデバイスで動作する理由を知っていますか?もう一度、その最後の回答へのリンクを編集することができればうれしいでしょう。だから、他の誰かが将来この質問を見つけた場合には、それは競争参考として役立ちます! :) –

+0

ありがとう@ᔕᖺᘎᕊ。 iOS 8の移行が実行時に推測されるかもしれませんが、iOS 7ではずっと早く決定されます。 iOS 7では、xcodeは 'initialViewController'を読み込みます。 'storyboard'の' navigationController'に '埋め込み'されていなければ 'NavigationBar'を表示しません。しかし、私は完全にその答えのリンクに同意しない。 'navigationController'に埋め込まれることによって、私は新しいnavigationControllerを追加することを望んでいました。私はその部分に同意します。しかし、私はまた、新しい 'navigationController'を 'initialViewController'(xcodeのチェックボックス)にすると言っています。私は不明です。私の答えを編集してください。 –

関連する問題