我有一个标签栏类(附在我的标签栏控制器上),如下所示:
class CaptionTabBarController: UITabBarController, UITabBarControllerDelegate {
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
var logView = self.viewControllers![2] as CaptionsController
logView.log.append("test working!")
}
override func awakeFromNib() {
self.delegate = self;
}
}
我的接收视图控制器是这样的:
class CaptionsController: UIViewController {
@IBOutlet weak var captionSearchBar: UISearchBar!
@IBOutlet weak var captionsTitle: UILabel!
var receiveImage:UIImage!
var receiveCategoryText:String!
var log = [String]()
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
println(log)
}
}
当我在logView.log
中明确设置CaptionTabBarController
时,这是有效的。
我在输出窗口中得到的结果与预期的一样。我点击的每个标签栏项目都会添加"测试工作!"到阵列。
我的问题是:
我如何使用我使用的CaptionsController
方法将另一个viewcontroller类的值设置为tabBarController
?
此视图是"孩子的一部分"标签栏本身,所以我假设它已经有一个实例。我发现的所有示例都只显示了这一点,但没有显示如何从其他类中获取数据。
答案 0 :(得分:1)
想要传递数据的UIViewController
可以将其存储在AppDelegate
课程中。然后,UITabBarController
委托方法可以将其拉出并在接收UIViewController
上设置属性。
此外,假设您的应用基于标签控制器,您的AppDelegate可以使用window?.rootViewController as UITabBarController
找到它。