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

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

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

正确的做法是什么?


当前回答

如果你想关闭前两个视图控制器,只需像这样调用popViewController两次:

self.navigationController?.popViewController(animated: true)
self.navigationController?.popViewController(animated: true)

其他回答

斯威夫特3:

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

_ = navigationController?.popViewController(animated: true)

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

_ = navigationController?.popToRootViewController(animated: true)

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

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

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

对于swift 3 您只需要编写下面这行代码

_ = navigationController?.popViewController(animated: true)

斯威夫特3,斯威夫特4

if movetoroot { 
    navigationController?.popToRootViewController(animated: true)
} else {
    navigationController?.popViewController(animated: true)
}

navigationController是可选的,因为可能没有。

在这种情况下,你从UIViewController中呈现一个UIViewController,也就是。

// Main View Controller
self.present(otherViewController, animated: true)

简单地调用dismiss函数:

// Other View Controller
self.dismiss(animated: true)

如果你想关闭前两个视图控制器,只需像这样调用popViewController两次:

self.navigationController?.popViewController(animated: true)
self.navigationController?.popViewController(animated: true)