ストーリーボードを使用して、モーダルを閉じる適切な方法は何ですか?
こちらをご覧ください 表示されたView Controllerの削除 約半分
提示されたView Controllerを却下するときが来るとき、望ましいアプローチは、提示したView Controllerにそれを却下させることです。
したがって、ボタンをクリックした後、IBActionを使用して、コードを記述して終了する必要があります。
通常、ストーリーボードでこれを行おうとすると、余分なクラスを作成しない方がよいことがわかりました。提示するView Controllerから却下を実行することは依然として理にかなっているため、クラスをサポートする必要があります。
表示するView ControllerでIBActionを作成し、適切に名前を付ける場合.
- (IBAction)dismissAnyModel:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
次に、ストーリーボードから解雇をトリガーしたい場所で、次のように最初のレスポンダーへのアクションを作成します。 IBActionsの一意の名前を作成することにより、これを拡張して複数の表示View Controllerで動作することができます。
Alex CioによるSwift 3
およびXCode 8.3
の回答:
クラスを作成します。
import UIKit
class DismissSegue: UIStoryboardSegue {
override func perform() {
self.source.presentingViewController?.dismiss(animated: true, completion: nil)
}
}
ただし、ストーリーボードでは次を選択する必要があります。
アクションセグエ->カスタム->却下
このオプションがAction Segue
メニューに表示された後にのみ
私の答えをご覧ください こちら 。ストーリーボードでモーダルビューコントローラーを閉じるには、2つの方法があります。プロジェクトにクラスを追加すると、ストーリーボードのみを使用してコードなしでモーダルビューから戻ることができるため、説明した方法2が気に入っています。ただし、デリゲートとデリゲートプロトコルを実装している場合は、dismissModalViewControllerステートメントを配置するのにも適しています。
UIStoryboard
内でこれを行うには、最初にプロジェクトでUIStoryboardSegue
型のオブジェクトを作成する必要があります
次に、クラス内に次のメソッドを挿入します。これが私のクラスです
@implementation DismissController
- (void)perform{
UIViewController *sourceVC = self.sourceViewController;
[sourceVC.presentingViewController dismissViewControllerAnimated:YES
completion:nil];
}
これで、UIStoryboard
内で使用できます。 UIViewController
を非表示にするボタンを選択し、目的のUIViewController
にドラッグします。私の場合、私のクラスの名前のため、** dismiss Controller *と表示されます。
それを選択すれば完了です!非常に良い説明もあります このウェブサイト上