我将用户发送到一个页面上的按钮点击。这个页面是一个UITableViewController。

现在如果用户点击一个单元格,我想把他推回到上一页。

我想到了self.performSegue("back")....但这似乎不是一个好主意。

正确的做法是什么?


当前回答

斯威夫特4

有两种方法返回/返回之前的ViewController:

第一种情况:如果你使用:self.navigationController?。pushViewController(yourViewController, animated: true) 在这种情况下,你需要使用self.navigationController?会被(动画:真) 第二种情况:如果你使用:self。present(yourViewController, animated: true, completion: nil) 在这种情况下,您需要使用self。解散(动画:true,完成:nil)

在第一种情况下,确保你在故事板中嵌入了ViewController到navigationController

其他回答

试试这个: 对于前面的视图使用这个:

navigationController?.popViewController(animated: true)  

弹出到根目录使用以下代码:

navigationController?.popToRootViewController(animated: true) 

关于如何在故事板中嵌入viewController到navigationController的问题:

打开不同viewController所在的故事板 点击你想要导航控制器开始的viewController 在Xcode顶部,点击“编辑器” ->轻按“嵌入” ->轻按“导航控制器”

斯威夫特4

有两种方法返回/返回之前的ViewController:

第一种情况:如果你使用:self.navigationController?。pushViewController(yourViewController, animated: true) 在这种情况下,你需要使用self.navigationController?会被(动画:真) 第二种情况:如果你使用:self。present(yourViewController, animated: true, completion: nil) 在这种情况下,您需要使用self。解散(动画:true,完成:nil)

在第一种情况下,确保你在故事板中嵌入了ViewController到navigationController

我是这样做的

func showAlert() {
    let alert = UIAlertController(title: "Thanks!", message: "We'll get back to you as soon as posible.", preferredStyle: .alert)

    alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
        self.dismissView()
    }))

    self.present(alert, animated: true)
}

func dismissView() {
    navigationController?.popViewController(animated: true)
    dismiss(animated: true, completion: nil)
}

斯威夫特3:

如果你想回到之前的视图控制器

_ = navigationController?.popViewController(animated: true)

如果你想回到根视图控制器

_ = navigationController?.popToRootViewController(animated: true)

如果你没有使用导航控制器,请使用下面的代码。

self.dismiss(animated: true, completion: nil)

动画值可以根据您的要求设置。