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

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

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

正确的做法是什么?


当前回答

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

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

简单地调用dismiss函数:

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

其他回答

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

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

简单地调用dismiss函数:

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

斯威夫特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)
}

如果Segue是“Show”或“Push”类型,那么你可以在UINavigationController的实例上调用“popViewController(animated: Bool)”。或者如果segue是present,那么调用UIViewController的实例"dismiss(animated: Bool, completion: (() -> Void)?

我可以通过在导航控制器的“viewDidDisappear”中写代码重定向到根页面,

override func viewDidDisappear(_ animated: Bool) { self.navigationController ?。popToRootViewController(动画:真) }

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

navigationController?.popViewController(animated: true)  

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

navigationController?.popToRootViewController(animated: true)