放松后,ViewController仍然停留在segue

时间:2018-01-06 07:16:51

标签: ios swift3 segue dismiss

所以我有多个控制器,我们称之为A,B和C.

当我去A,并在tableview中选择一个项目时,我会被转移到B,我可以在那里编辑项目并保存。现在,当我按下save时,我有一个展开segue,它将我带到主页C。

然而,当我再次去A时,视图仍然停留在B上,我必须再次按TabBarItem,我曾经再次来到A,回到A.为什么会发生这种情况,我只是想要A按下保存时再次出现,B再次出现消失。

我尝试了以下代码:

self.presentingViewController?.dismiss(animated: false, completion:nil)
self.dismiss(animated: false, completion: nil)
在segue和save按钮代码中都有

,但似乎没有任何事情发生。

好的,这里有更多上下文要求:

所以这是ViewController A:

enter image description here

这是viewController B:

enter image description here

所以当我按下save时,它会将我传送到viewcontroller C:这是这个 这是viewcontrollerC:

enter image description here

然后,使用标签栏,当我回到viewcontroller a时,我受到了欢迎:

enter image description here

正如你所看到的,tabbar是第三个选项,但我得到了viewcontroller B的欢迎,然后,我必须再次点击第三个选项(标题为collection的那个)返回viewcontroller A. p>

希望事情更清楚,如果需要任何代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果这是你需要的,试试这个:

class CViewController : UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "C"
        view.backgroundColor = .yellow

        let button = UIButton(type: .system)
        button.setTitle("Go to A", for: .normal)
        button.addTarget(self, action: #selector(goToA), for: .touchUpInside)

        button.frame = CGRect(x: 100, y: 200, width: 100, height: 40)

        view.addSubview(button)

    }

    @objc func goToA() {
        let AVC = AViewController()
        self.navigationController?.pushViewController(AVC, animated: true)
    }

}


class AViewController : UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "A"
        view.backgroundColor = .green

        tableView.delegate = self
        tableView.dataSource = self

    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 6
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        cell.textLabel?.text = "Cell \(indexPath.row)"
        return cell
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let BVC = BViewController()
        self.navigationController?.pushViewController(BVC, animated: true)
    }



}

class BViewController : UIViewController {


    override func viewDidLoad() {
        super.viewDidLoad()
        title = "B"
        view.backgroundColor = .cyan

        let button = UIButton(type: .system)
        button.setTitle("save", for: .normal)
        button.addTarget(self, action: #selector(save), for: .touchUpInside)

        button.frame = CGRect(x: 100, y: 200, width: 100, height: 40)

        view.addSubview(button)


    }

    @objc func save() {
        self.navigationController?.popToRootViewController(animated: true)
    }

}

如果您有任何疑问,请随意。 希望它有所帮助。