ios - 将数据从 TabbarController 传输到 ViewController 时为零
问题描述
看不懂是什么错误,普通用户应该注册,前提是一切都成功了,当前用户会显示在 上TabBarController
,如果你想让他转换成print("\(currentUser)")
,那么一切都好。该用户的协议
这里我输出到控制台,一切正常
import UIKit
class MainTabBarViewController: UITabBarController {
var currentUser: MUser = MUser(username: "fdff",
usersurname: "dfdf",
phone: "dffd",
sex: "dfb",
avatarStringURL: "fgf",
id: "gf",
bithDate: "fggf")
override func viewDidLoad() {
super.viewDidLoad()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let messageVC = storyboard.instantiateViewController(identifier: "MessageVC") as! MessageVC
messageVC.currentUser = currentUser
print("\(currentUser)")
}
}
但是你看,我把它传给了这个控制器,在这个控制器中 nil 问题
import UIKit
import FirebaseFirestore
class MessageVC: UITableViewController {
var chat = [MChat]()
var currentUser: MUser!
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(chat[indexPath.row])
print("\(currentUser)") // return nil
let chatsVC = ChatsViewController(user: currentUser, chat: chat[indexPath.row])
navigationController?.pushViewController(chatsVC, animated: true)
}
}
谁能解释我做错了什么?
解决方案
解决方案
尝试MessageVC
从情节提要实例化 ,然后将数据从TabBarController
.
MessageVC
保存全局外部的引用ViewDidLoad
并将其用于导航。
例子
class MainTabBarViewController: UITabBarController {
var currentUser: MUser = MUser(username: "fdff",
usersurname: "dfdf",
phone: "dffd",
sex: "dfb",
avatarStringURL: "fgf",
id: "gf",
bithDate: "fggf")
// Declare Message VC instance
var messageVC : MessageVC!
override func viewDidLoad() {
super.viewDidLoad()
// Instantiate from Storyboard
let storyboard = UIStoryboard(name: "Main", bundle: nil)
messageVC = storyboard.instantiateViewController(identifier: "VCIdentifier")
messageVC.currentUser = currentUser
print("\(currentUser)")
}
}
更新:从 TabBarController 访问子 ViewController
func accessMessageVC() {
// Use your viewcontroller index.
let vc = self.viewControllers![2] as! MessageVC
messageVC.currentUser = currentUser
}
从 TabBarController 调用此方法ViewDidLoad
推荐阅读
- c# - 错误:“StudentScore”是一种类型,在给定的上下文中无效
- python - 使用 Google Cloud Function by Python 时可以部署通用函数吗?
- angular - 如何在所有挂起的操作完成之前阻止 UI?
- android - 如何组织常用的 gradle 任务并提取常用代码块
- uitableview - TableViewcell 内的标签动画
- gatsby - GatsbyJS - 加载多个远程图像并链接到节点 - 没有 ChildImageSharp
- c++ - clang format: disable ordering includes
- kubernetes - 公司代理背后的 Kubectl
- android-studio - android studio 属性 layout margin 贪婪从右上角消失
- mongodb - 如何在mongodb的多个文档中删除数组内的重复对象?