所以我有多个控制器,我们称之为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:
这是viewController B:
所以当我按下save时,它会将我传送到viewcontroller C:这是这个 这是viewcontrollerC:
然后,使用标签栏,当我回到viewcontroller a时,我受到了欢迎:
正如你所看到的,tabbar是第三个选项,但我得到了viewcontroller B的欢迎,然后,我必须再次点击第三个选项(标题为collection的那个)返回viewcontroller A. p>
希望事情更清楚,如果需要任何代码,请告诉我。
答案 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)
}
}
如果您有任何疑问,请随意。 希望它有所帮助。