ボタンクリックでユーザーをページに送ります。このページは UITableViewController です。
ユーザーがセルをタップしたら、前のページに戻ります。
私はself.performSegue("back")....
のようなものについて考えましたが、これは悪い考えのようです。
それをする正しい方法は何ですか?
スイフト3:
前のView Controllerに戻りたい場合
_ = navigationController?.popViewController(animated: true)
ルートView Controllerに戻りたい場合
_ = navigationController?.popToRootViewController(animated: true)
スイフト3 、 スイフト4
if movetoroot {
navigationController?.popToRootViewController(animated: true)
} else {
navigationController?.popViewController(animated: true)
}
1つがない場合があるため、navigationControllerはオプションです。
スイフト3
私は答えに遅れるかもしれませんが、Swift 3のためにあなたはそれをこのようにすることができます:
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "< Back", style: .plain, target: self, action: #selector(backAction))
// Do any additional setup if required.
}
func backAction(){
//print("Back Button Clicked")
dismiss(animated: true, completion: nil)
}
スイフト4
前のViewControllerに戻る/戻るには2つの方法があります。
self.navigationController?.pushViewController(yourViewController, animated: true)
この場合self.navigationController?.popViewController(animated: true)
を使用するには が必要ですself.present(yourViewController, animated: true, completion: nil)
この場合self.dismiss(animated: true, completion: nil)
を使用するには が必要です最初のケースでは、ストーリーボードのViewControllerをnavigationControllerに埋め込んだことを確認してください。
UIViewController
内からUIViewController
を提示した場合、つまり...
// Main View Controller
self.present(otherViewController, animated: true)
単にdismiss
関数を呼び出すだけです。
// Other View Controller
self.dismiss(animated: true)
Segueが「表示」または「プッシュ」の種類の場合は、UINavigationControllerのインスタンスで「popViewController(animated:Bool)」を呼び出すことができます。あるいはsegueが一種の "present"であれば、UIViewControllerのインスタンスで "dismiss(animated:Bool、completion:(() - > Void)?))と呼びます。
swift 3では、次のコードを書くだけでいいのです。
_ = navigationController?.popViewController(animated: true)
Swift 5以上
ケース1:ナビゲーションコントローラとの併用
self.navigationController?.popViewController(animated: true)
ケース2:現在のView Controllerとの併用
self.dismiss(animated: true, completion: nil)
これを試してみてください。前のビューではこれを使います。
navigationController?.popViewController(animated: true)
ルートにポップこのコードを使用します。
navigationController?.popToRootViewController(animated: true)
TabViewControllerを最後のビューとして持つSwift 4.0 Xcode 10.0
あなたの最後のViewControllerがTabViewControllerに埋め込まれている場合、以下のコードはあなたをルートに送るでしょう...
navigationController?.popToRootViewController(animated: true)
navigationController?.popViewController(animated: true)
しかし、本当に最後のビュー(Tab1、Tab2、Tab3ビューなど)に戻りたい場合は、次のコードを記述する必要があります。
_ = self.navigationController?.popViewController(animated: true)
これは私のために動作します、私は私のTabViewのいずれかの後にビューを使用していました:)
ストーリーボードのviewControllerをnavigationControllerに埋め込む方法に関する質問について: