5

Xcodeプロジェクトのストーリーボードファイル内にいくつかのシーンを作成しました。最初に読み込まれるシーンは、ユーザーのログイン画面です。ユーザーがUIButtonにログインすると、「ログイン」によりユーザーはウェルカム画面に移動します。モーダルセグエを使用してストーリーボードで設定します。「admin」という名前のユーザーにウェルカム管理画面を表示してもらいたい。1つのオブジェクト、つまりストーリーボードのUIButtonに1つのセグエを関連付けることしかできないと確信しているので、ログインを実行して管理者を管理者のウェルカム画面に移動し、他のすべてのユーザーをユーザーのウェルカム画面。私は本当に2つの別々のログインボタンを作成したくないので、それはオプションではありません。

私は同様の質問でいくつかのstackoverflowの投稿に出くわしましたが、すべての答えは少し複雑に見えました。私はXcodeを初めて使用するので、回答にコードを貼り付ける場合は、コードを挿入するファイルを指定してください(これは非常に役立ちます)。私が話していることの視覚的な図を示すのを助けるために、これまでの私のストーリーボードがどのように見えるかの写真を投稿します。

ここに画像の説明を入力してください

4

2 に答える 2

6

私があなたの質問を正しく理解した場合、それを機能させるために必要な手順は次のとおりです。

  1. –から、WelcomeViewControllerユーザー名/パスワードのログインボタンがあり、からをcontrol +ドラッグしてUIViewController、ポップアップメニューからWelcomeScreen選択します( UIViewControllerからドラッグすると、ストーリーボードで選択します。下部に丸い形のアイコンがあります) 、そこからデスティネーションビューコントローラまで)。セグエ識別子に「UserSegue」という名前を付けますModalUIViewController

  2. 手順1を繰り返しますが、代わりにcontrolキーを押しながらAdmin画面にドラッグします。セグエ識別子に「AdminSegue」という名前を付けます

  3. あなたは今、サブクラス化する必要がありますWelcomeViewController

  4. 埋め込む-(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];
        }
    }
    
  5. ストーリーボードで、ログインボタンを手順4のメソッドに接続します。

于 2012-06-09T02:51:03.540 に答える
1

そうです-ボタン(または他のコントロール)からの発信セグエは1つだけです。

ただし、ViewControllerからの発信セグエはいくつでも持つことができます。ボタン(または他のコントロール)に接続されているものとは異なり、ビューコントローラーからのセグエは、コントロールがタップされたときに自動的に呼び出されません-コードで実行する必要がありますが、コードで実行すると、それに応じて柔軟に実行できますあなたが必要とするどんな条件にも。

ビューコントローラからセグエを作成するには、IBのビュー(オレンジ色の円)の下にあるビューコントローラアイコンから、またはシーンアウトラインのエントリからcontrolキーを押しながらドラッグします。セグエを作成したら、一意の識別子を指定します(例:「mySegue」)。

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

それが助けになるなら、同様の質問に対する私の答えにはもっと説明があります。

于 2012-06-09T02:43:18.577 に答える