gpt4 book ai didi

ios - 如何通过点击取消按钮显示两个 ViewController 之一?

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:36 27 4
gpt4 key购买 nike

我有一个 ViewController,我可以通过单击 TabBarItem 或通过在导航栏上按加号从 Table View Controller B 中点击它。

我的问题

如何,通过单击 ViewController 上的取消按钮,如果我通过单击加号从 Table View Controller B 进入 ViewController,我可以进入 Table View Controller B,或者如果我通过选择进入 ViewController,我可以进入 Table View Controller A第二个(蓝色)标签栏项目?

我想为 ViewController 上的“取消”按钮设置两个操作 - 根据之前的 Controller ,我想转到 TableViewControllerA 或 TableViewControllerB,这可能吗?

详情

转换的第一个版本:通过单击 TableViewControllerB 上的加号按钮,我转到 ViewController,然后在 ViewController 上单击取消按钮并返回到 TableViewControllerB。

转换的第二个版本:通过单击 TabBar Controller 上的第二个 TabBarItem,我转到 ViewController,然后在 ViewController 上单击“取消”按钮并返回到 TableViewControllerA。

Schema of my project

最佳答案

根据您的 View Controller 流程图,有两种方法可以实现您想要的。

  1. 弹出到 Root View Controller
  2. 弹出特定 View Controller (TableViewController A)

您需要根据您的要求决定应该使用哪些选项。

将以下代码添加/替换到您的取消按钮,然后依次尝试这两个选项:

@IBAction btnCancel_Action(button: UIButton) {

// 1. Pop to root view controller
self.navigationController?.popToRootViewController(animated: true)

// OR
// 2. Pop to Specific view controller (TableViewController A)

if let navController = self.navigationController {

for viewcontroller in navController.viewControllers {
// `TableViewControllerA` class name for view controller or you can use instance of `TableViewControllerA` also with `viewcontroller == <TableViewControllerA>`

if viewcontroller is <TableViewControllerA> {
//if viewcontroller == <IntanceOfTableViewControllerA> {
self.navigationController?.popToViewController(viewcontroller, animated: true)
break
}

}
}
}



根据问题编辑编辑答案:试试这个

@IBAction btnCancel_Action(button: UIButton) {
if let tabController = self.tabBarController {
if tabController.selectedIndex == 0 {
self.navigationController?.popViewController(animated: true)
} else if tabController.selectedIndex == 1 {
self.tabBarController?.selectedIndex = 0


// If your tabbar 0 has TableViewControllerB is active on screen then use following code
if let navController = self.tabBarController?.navigationController {
navController.popToRootViewController(animated: false)

/*
//or
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: {
navController.popToRootViewController(animated: false)
})
*/
}


}
}
}

关于ios - 如何通过点击取消按钮显示两个 ViewController 之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46075983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com