gpt4 book ai didi

ios - 设置委托(delegate)以将数据从一个选项卡传递到另一个选项卡

转载 作者:行者123 更新时间:2023-11-28 09:43:21 24 4
gpt4 key购买 nike

我正在使用:XCode 8.2、Swift 3.0、iOS 10.2、iPhone 7。我有一个带有子 View ControllersTab Bar Controller

我正在尝试将数据从一个 View Controller 发送到另一个。

我已经查过如何做到这一点 herehere但第一个链接并不是我想要的,因为他在谈论 Storyboard转场,这似乎与在选项卡之间移动时使用的转场类型不同。

我尝试在其中发送数据的选项卡:

protocol SendResultsDelegate {
func sendResults(data: String)
}

class SendingVC {
....
if delegate != nil {
let data = // some string here
delegate?.sendResults(data: data!)

}
}

我试图在其中接收数据并将其打印出来的选项卡:

import UIKit

class ResultsViewController: UIViewController, SendResultsDelegate {

@IBOutlet weak var resultsTextField: UITextView!

func sendResults(data: String) {
resultsTextField.text = data
}
}

我不确定这是否正确,但是...我的选项卡栏 Controller 也附加了一个自定义类:

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
let resultsIndex = 2

if item == (self.tabBar.items! as [UITabBarItem])[resultsIndex] {
let sendingVC : SendingVC = segue.destinationViewController as! SendingVC
SendingVC.delegate = self
}
}

我不确定它应该是tabBar 函数还是prepare 函数。我基本上是在尝试:当用户单击结果选项卡时,将设置该委托(delegate),然后通过 if 语句检查可以显示文本字段的 ResultsViewController。当然,这甚至无法编译/构建,我不确定从这里去哪里。任何帮助将不胜感激。

最佳答案

好吧,我自己想通了,正如@Leo Feng 所说,我不需要使用委托(delegate)模式。这个答案被证明是有帮助的:Passing data between tab viewed controllers in swift?

在我的例子中,它更像是:

在发送 View Controller 中:

let secondTab = self.tabBarController?.viewControllers?[2] as! ResultsViewController
secondTab.result_data = // my data here

在接收 View Controller 中:

import UIKit

class ResultsViewController: UIViewController, SendResultsDelegate {

@IBOutlet weak var resultsTextField: UITextView!

var result_data : String? = nil

override func viewWillAppear(_ animated: Bool) {
if(result_data != nil) {
// do stuff with result_data
}
}
}

关于ios - 设置委托(delegate)以将数据从一个选项卡传递到另一个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41785400/

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