web-dev-qa-db-ja.com

IOS7、セグエ、ストーリーボード-ボタンなしで作成する方法

現在、ログインビューとアプリケーションビューがあります。ログインビューに検証を正常に実装しました。検証が成功したら、プログラムでアプリケーションビューに移行する必要があります。

ログインボタンにsegueを追加し、プログラムで次のように呼び出すことができることを理解しています...

[self performSegueWithIdentifier:@"LoginSegue" sender:sender];

ただし、ボタンがクリックされるたびに、これは明らかにトリガーされます(ボタンにセグエが作成されたため)。ボタンを作成して(そして非表示にして)セグエをプログラムで呼び出す必要があることを読んだところです-これは少し「間違っている」ようです。

特定のUIイベントに関連付けられていないセグエを作成するにはどうすればよいですか?

64
LiamB

現在のセグエを削除します。

Origin View Controllerからセグエを宛先に接続します(そして名前を付けます)。

これで、ボタンを押す方法は次のようになります。

Objective-C:

- (IBAction)validateLogin:(id)sender {
    // validate login
    if (validLogin) {
        [self performSegueWithIdentifier:@"mySegue" sender:sender];
    }
}

迅速:

@IBAction func validateLogin(sender: UIButton) {
    // validate login
    if validLogin {
        self.performSegueWithIdentifier("mySegue", sender:sender)
    }
}

ここで重要なのは、ボタンやその他のUI要素ではなく、Origin View Controllerをドラッグしてセグエを作成する必要があることです。

enter image description here

個人的に、私はすべてのセグエをこのようにフックします。単純なボタンのプッシュでトリガーされるはずのセグエも、その背後にある検証もロジックもありません。ボタンのメソッドから呼び出すのは簡単です。

そして、通常、プロジェクト内のどこかでセグエ名をすべて定数文字列として宣言します。

138
nhgrif