5

私はXcodeプロジェクトでストーリーボードファイル内にいくつかのシーンを作成しており、ロードされる最初のシーンは画面のユーザーログインです。ユーザーがUIButtonにログインすると、「ログイン」はユーザーをウェルカム画面に移動させます。私はモーダルセグを使ってストーリーボードに設定しました。私は "admin"という名前のユーザーを歓迎する管理画面にしたい。 1つのオブジェクト、つまりストーリーボードのUIButtonに関連付けられた1つのセグを持つことが可能なのは確かです。ユーザーのようこそ画面。 2つの別個のログインボタンを作成したくないので、これはオプションではありません。1つのUIButtonの2つのシーンが1つしかない、条件付きコードが必要

私は同様の質問でいくつかのstackoverflow投稿に出くわしましたが、すべての回答はちょっと複雑なようでした。私がXcodeを初めて使用していることを覚えておいてください。もしあなたの答えにコードを貼り付けるなら、コードが入るファイルを指定してください。私が話していることの視覚的な図を示すために、これまでの私のストーリーボードの様子を写真に掲載します。そうです

enter image description here

答えて

6

私が正しくあなたの質問を理解している場合は、あなたはそれを動作させるために取るために必要な手順です:

  1. WelcomeViewControllerから - あなたがからユーザー名/パスワードのログインボタン、コントロール+ドラッグを持っていますUIViewControllerからWelcomeScreenまでを選択し、ポップアップメニューからModalを選択します(によってUIViewControllerからドラッグすると、ストーリーボードのUIViewControllerを選択してください。丸いシェイプのアイコンが表示されます)。セグの識別子に「UserSegue」と名前を付けてください。

  2. 手順1を繰り返しますが、代わりに制御+画面をAdminにドラッグします。"AdminSegue"

  3. あなたはWelcomeViewControllerをサブクラス化する今必要としてメソッドにログインボタンをフックアップ、ストーリーボードで-(IBAction)login:(id)sender

    - (IBAction)login:(id)sender { 
    
        // assuming you have hooked up the user name text field 
    
        if ([self.usernameTextField.text isEqualToString:@"admin"]) { 
         [self performSegueWithIdentifier:@"AdminSegue" sender:sender]; 
        } 
        else { 
         [self performSegueWithIdentifier:@"UserSegue" sender:sender]; 
        } 
    } 
    
  4. を実装

  5. をセグエ識別子に名前を付けステップ4で。

+0

タイムリーな対応をしてくれてありがとう、あなたが探していたソリューションです。 – Chris

1

- あなただけのボタン(または他の制御)から1つの出力セグエを持つことができます。

ただし、ビューコントローラからの送信セグをいくつでも指定できます。ボタン(または他のコントロール)に添付されているものとは異なり、ビューコントローラからのセグは、コントロールがタップされたときには自動的に呼び出されません。コードで行う必要がありますが、コードで行う必要があります。あなたが必要とするどんな条件にも。

ビューコントローラからセグを作成するには、IBのビュー(オレンジ色の円)の下のビューコントローラアイコン、またはシーンアウトラインのエントリからコントロールをドラッグします。セグを作成したら、一意の識別子(「mySegue」など)を付けます。

次に、ボタンに接続されたアクションメソッドを作成します。そのメソッドの実装(おそらくボタンを含むView Controller内にあります)では、必要な条件をテストし、セグを実行するには[self performSegueWithIdentifier:@"mySegue"]を呼び出します。

私のanswer to a similar questionに詳しい説明があります。ここ

関連する問題