初心者の質問はご容赦ください。このような別の画面(ViewController)に切り替えることができることを知っています
self.performSegueWithIdentifier ("SecondViewController", sender: self)
しかし、2番目の画面にidを割り当てる場所が見つからないようです。StoryboardIDを見つけただけです。
私はすでに試しましたが、次のエラーでクラッシュを受け取りました:
受信者()には識別子 'SecondViewController'のセグエがありません
何か案が?ありがとう
セグエ識別子はnotと同じストーリーボードID、ストーリーボードIDはその特定のストーリーボードに基づいてView Controllerを作成します(セグエ識別子とは異なり、一意でなければなりません)。
セグエの作成方法をすでに知っている場合は、この部分をスキップできます。
Interface Builderから、 ctrl リンクする2つのView Controller間をドラッグします(メインビューではなく、View Controller自体からドラッグしていることを確認してください)。見るべき:
[表示]を選択します(たとえば)。出力は次のようになります。
上記のように、赤い長方形で囲まれた矢印はセグエです。
追加メモ:「表示」オプションを選択した場合、最初のView ControllerをNavigation Controllerに埋め込む必要があります(最初のviewControllerを選択-> Editor-> Embed In-> Navigation Controller)、出力は次のようになります。
「表示」とは、ナビゲーションコントローラースタックにプッシュすることを意味するためです。
セグエを選択します。属性インスペクターから「識別子」テキストフィールドが表示されます、それだけです! performSegueWithIdentifier
で使用したものとまったく同じ名前を挿入してください。
属性インスペクターの場所がわからない場合、右上にあるのは次のようになります:
1つのView Controllerからmultipleセグエを追加するには、同じプロセス(ctrl +最初のコントローラーから他のView Controllerにドラッグします)、出力は次のようになります。
この場合、どのセグエが実行されたかを認識する方法の問題に直面する可能性があります prepare(for:sender:)
メソッドをオーバーライドすることが解決策であり、セグエidentifier
プロパティ:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "firstSegueIdentifier") {
// ...
} else if (segue.identifier == "secondSegueIdentifier") {
//...
}
}
ストーリーボードのセグエに追加した名前になります。
あなたのコードで
self.performSegueWithIdentifier ("SecondViewController", sender: self)
文字列「SecondViewController」は、ストーリーボードidのように見えます。同じ場所で、ストーリーボードIDではなくセグエ識別子を記述する必要があります。
スクリーンショットに従って、右上のバーフィールドでセグエをクリックしてセグエ識別子名を割り当てます。あなたはこのようにすることができます
self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)
次のようにviewControllerを開始できます。
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)
Viewコントローラーをストーリーボード内の別のViewコントローラーにリンクする場合、それらの間のリンクではセグエ識別子、つまり「SecondViewController」のみを割り当てる必要があります。そうすればコードが機能します。
または、self.storyboard.instantiateViewControllerWithIdentifier( "// storyboard id of that view controller")を使用して、ストーリーボードIDで別のView Controllerを表示してから、present/showビューコントローラーを使用することもできます。