Segue在UITableView

时间:2018-03-09 20:51:32

标签: ios xcode uitableview uistoryboardsegue

你如何从ViewController转向位于UITableView(位于NavigationController中)的ViewController?

Image of Storyboard with description

我可以控制 - 从“DetailButton”拖动到“DetailViewController”,但如果你这样做,它就不会显示在导航控制器中。 NavigationBar应该仍然允许用户返回UITableView,即使他们从“DetailButton”这里进行了干扰。

1 个答案:

答案 0 :(得分:0)

这是我提出的解决方案。如果其他人有更好的方法,请在此处发布。

故事板步骤:

  1. 控制 - 拖动" DetailButton"到导航控制器创建一个segue。给这个segue标识符" detailSegue"。

  2. 控制 - 从UITableViewCell拖动您想要链接到DetailViewController到DetailViewController。将此segue命名为" showDetail"。

  3. UITableViewController步骤:

    var shouldSegueToDetail = false
    
    override func viewDidLoad() {
        ...
        // Check if we should segue to DetailViewController
        if shouldSegueToDetail {
            // Reset flag
            shouldSegueToDetail = false
    
            // Go to DetailViewController
            performSegue(withIdentifier: "showDetail", sender: self)
        }
    }
    

    OriginalViewController步骤:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "detailSegue" {
            let navigationVC = segue.destination as! UINavigationController
            let tableVC = navigationVC.viewControllers[0] as! UITableViewController
            tableVC.shouldSegueToDetail = true
        }
    }
    

    选项:

    您可以使用所选项目的IndexPath调用UITableView的selectRow方法,而不是从UITableViewCell到DetailViewController进行segue。