Swift 如何在视图控制器和选项卡栏之间传递数据';s使用segue查看控制器?
我还添加了设计的屏幕截图 我有一个单视图控制器和一个带有两个视图控制器B,C的选项卡 我想通过tabbar从VcA->VcB传递Swift 如何在视图控制器和选项卡栏之间传递数据';s使用segue查看控制器?,swift,swift5,Swift,Swift5,我还添加了设计的屏幕截图 我有一个单视图控制器和一个带有两个视图控制器B,C的选项卡 我想通过tabbar从VcA->VcB传递data变量的数据 我已将序列从submitbutton拖到选项卡栏 我试图通过segue传递数据 所以,请帮我解决这个问题 //In View controller A class ViewControllerA : UIViewController{ var data : String = "" @IBAction func submitButtonTap
data
变量的数据
我已将序列从submitbutton
拖到选项卡栏
我试图通过segue传递数据
所以,请帮我解决这个问题
//In View controller A
class ViewControllerA : UIViewController{
var data : String = ""
@IBAction func submitButtonTapped(_ sender: Any) {
performSegue(withIdentifier: "homePage", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = self.tabBarController!.viewControllers![0] as! ViewControllerB
vc.containsData = data
}
}
在选项卡栏的viewcontrollerB中,我刚刚在viewDidLoad()中打印了var“data”查看代码,我发现了问题所在 首先,您需要使用
prepare(for segue
方法在使用segue呈现viewControllerb
时传递数据。因此,在viewControllerb
中,添加此方法并如下设置viewControllerb
的数据
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let tabController = segue.destination as? UITabBarController {
let bController = tabController.children.first(where: { $0 is ViewControllerb })
(bController as? ViewControllerb)?.containsData = self.stringTF.text!
}
super.prepare(for: segue, sender: sender)
}
第二,从ViewController
中删除方法submitbuttonapped
,因为您正在使用segue显示ViewControllerb,所以这不是必需的。还可以通过单击下图中的十字键删除脚本中的此方法出口
如果您正在使用NavigationController传递数据viewController->Tabcontroller。请尝试在按钮/tableviewCell/collectionViewCell单击/按上清除代码
我得到了答案
@IBAction func submitButonTapped(_ sender: Any) {
performSegue(withIdentifier: "homePage", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let barViewControllers = segue.destination as! UITabBarController
let destinationViewController = barViewControllers.viewControllers![0] as! ViewControllerB
destinationViewController.containsData = Data
}
我希望数据来自不同的ViewController。到Tabbar的ViewController…..这可能有助于在您正在打印的Tabbaras中的ViewController之间传递数据
print(vcA.data)
我无法打印我已经显示了我尝试的代码,在打开可选值时,设计的屏幕截图意外地发现为零。我收到了错误我认为您有多个问题。如果您可以与问题共享示例项目,这样可以节省时间来解决问题e、 我在GitHub中有一个很好的例子,你可以修复它。请始终尝试包含所有相关的代码来重现问题,以获得更好的帮助。
let navController = self.Your_TABBAR_CONTROLLER.viewControllers![Tab_Index] as! UINavigationController
let vc = navController.topViewController as! Your_View_Controller
vc.name = Data
let navController = self.tabBarController.viewControllers![1] as! UINavigationController
let vc = navController.topViewController as! HomeViewController
vc.name= self.name
@IBAction func submitButonTapped(_ sender: Any) {
performSegue(withIdentifier: "homePage", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let barViewControllers = segue.destination as! UITabBarController
let destinationViewController = barViewControllers.viewControllers![0] as! ViewControllerB
destinationViewController.containsData = Data
}