#ios #swift
#iOS #swift
Вопрос:
Я использую NavigationController для управления представлением.
Если значение превышено в первом представлении и значение не удовлетворяет «если» во втором представлении, я надеюсь, что «отклонение» сработает.
Я привел аналогичный простой пример.
//First View
class ViewController: UIViewController {
@IBAction func goSecond(_ sender: Any) {
let Storyboard = UIStoryboard(name: "Main", bundle: nil)
let DvC = Storyboard.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
self.navigationController?.pushViewController(DvC, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
//Second View
class SecondViewController: UIViewController {
@IBAction func goThird(_ sender: Any) {
let Storyboard = UIStoryboard(name: "Main", bundle: nil)
let DvC = Storyboard.instantiateViewController(withIdentifier: "ThirdViewController") as! ThirdViewController
let num = 1
DvC.num = num
self.navigationController?.pushViewController(DvC, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
//Third View
class ThirdViewController: UIViewController {
var num = Int()
override func viewDidLoad() {
super.viewDidLoad()
print("num: ")
print(num)
if(num != 2) {
print("Success")
// dismiss(animated: true, completion: nil)
// navigationController?.dismiss(animated: true, completion: nil)
} else {
print("Failed")
}
}
}
Третье представление показывает «Успех», но коды под ним не работают.
dismiss(animated: true, completion: nil) // not work
navigationController?.dismiss(animated: true, completion: nil) // not work
Нажатие кнопки на первом представлении переходит ко второму представлению, а нажатие кнопки на втором представлении переходит к третьему представлению.
Если значение, переданное при переходе к третьему просмотру, не удовлетворяет «если», я хочу вернуться к первому просмотру.
Я хочу, чтобы завершались второй и третий просмотры, а не только сдвиг экрана.
Как у finish()
Android.
Как я могу выйти из второго и третьего представлений и вернуться к первому представлению?
Ответ №1:
Вы помещаете контроллеры просмотра в стек. dismiss
предназначен для отклонения VCS, представленных модально.
Что вы хотите сделать, это открыть VC, чтобы вернуться на один.
navigationController?.popViewController(animated: true)
или вернуться к корневому представлению.
navigationController?.popToRootViewController(animated: true)