【发布时间】:2017-01-22 23:03:56
【问题描述】:
我正在使用:XCode 8.2、Swift 3.0、iOS 10.2、iPhone 7。我有一个 Tab Bar Controller 和孩子 View Controllers。
我正在尝试将数据从一个视图控制器发送到另一个。
我已经查看了如何做到这一点 here 和 here 但第一个链接并不是我想要的,因为他正在谈论 Storyboard segues,这似乎与使用的 segues 类型不同在选项卡之间移动时。
我尝试发送数据的选项卡:
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
}
}
我不确定这是否正确,但是...我还有一个自定义类附加到我的标签栏控制器:
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 函数。我基本上是在尝试:当用户单击结果选项卡时,该委托被设置,然后通过 if 语句检查 ResultsViewController 可以显示文本字段。当然,这甚至无法编译/构建,我不确定从这里去哪里。任何帮助将不胜感激。
【问题讨论】: