- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个项目,当我们选择某些内容时,Initial View
有一个 PickerView
。我将此数据作为 String
传递给 TabBarController
,然后从 TabBarController
传递给他的每 5 个“ child ”。
到目前为止,一切正常。
现在,通过单击 TableViewCell
,我想将数据从 TabBarController 的
子级 (ViewController
) 传递到非 TabBarController View ( FullNewsViewController
) 并显示此 View 。我尝试了几种方法,但没有任何效果。你能帮我吗?
我正在使用 Swift 5 和 Xcode 10.2。
这是我的 View Controller ,我想从中下载“FinalTeam”:
import UIKit
import FirebaseDatabase
class ViewController: UIViewController, UITableViewDelegate,
UITableViewDataSource {
@IBOutlet weak var imageView: UIImageView!
var ref: DatabaseReference?
var refHandle: DatabaseHandle?
var news = [String]()
var FinalTeam = ""
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var infoLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let tabbar = tabBarController as! TabBarViewController
var FinalTeam = tabbar.Team
// infoLabel.text = String(describing: tabbar.Team)
infoLabel.text = FinalTeam
tableView.delegate = self
tableView.dataSource = self
ref = Database.database().reference()
switch FinalTeam {
case "Lech Poznań":
imageView.image = UIImage(named: "leszek")
refHandle = ref?.child("News/Lech/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Legia Warszawa":
imageView.image = UIImage(named: "legia")
refHandle = ref?.child("News/Legia/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Lechia Gdańsk":
imageView.image = UIImage(named: "lechia")
refHandle = ref?.child("News/Lechia/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Wisła Płock":
imageView.image = UIImage(named: "wisla_p")
refHandle = ref?.child("News/Wisła_P/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Wisła Kraków":
imageView.image = UIImage(named: "wisla_k")
refHandle = ref?.child("News/Wisła_K/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Jagiellonia Białystok":
imageView.image = UIImage(named: "jaga")
refHandle = ref?.child("News/Jaga/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Piast Gliwice":
imageView.image = UIImage(named: "piast")
refHandle = ref?.child("News/Piast/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Pogoń Szczecin":
imageView.image = UIImage(named: "pogon")
refHandle = ref?.child("News/Pogoń/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Korona Kielce":
imageView.image = UIImage(named: "korona")
refHandle = ref?.child("News/Korona/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Cracovia":
imageView.image = UIImage(named: "cracovia")
refHandle = ref?.child("News/Cracovia/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Śląsk Wrocław":
imageView.image = UIImage(named: "slask")
refHandle = ref?.child("News/Śląsk/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Miedź Legnica":
imageView.image = UIImage(named: "miedz")
refHandle = ref?.child("News/Miedź/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Zagłębie Sosnowiec":
imageView.image = UIImage(named: "zaglebie_s")
refHandle = ref?.child("News/Zagłębie_S/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Zagłębie Lubin":
imageView.image = UIImage(named: "zaglebie_l")
refHandle = ref?.child("News/Zagłębie_L/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Górnik Zabrze":
imageView.image = UIImage(named: "gornik")
refHandle = ref?.child("News/Górnik/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
case "Arka Gdynia":
imageView.image = UIImage(named: "arka")
refHandle = ref?.child("News/Arka/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
default:
imageView.image = UIImage(named: "lech")
refHandle = ref?.child("News/Lech/Naglowek").observe(.value, with: { (snapshot) in
let post = snapshot.value as? String
if let actualPost = post {
self.news.append(actualPost)
self.tableView.reloadData()
}
})
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return news.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "newsCell")
cell?.textLabel?.text = news[indexPath.row]
return cell!
}
}
这是我的 FullNewsViewController,我想向其中发送此数据:
import UIKit
import FirebaseDatabase
class FullNewsViewController: UIViewController,UITextViewDelegate {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var contentTextView: UITextView!
@IBAction func button(_ sender: Any) {
navigationController?.popViewController(animated: true)
dismiss(animated: true, completion: nil)
}
var ref: DatabaseReference?
var refHandleTitle: DatabaseHandle?
var refHandleContent: DatabaseHandle?
var news = [String]()
var FinalTeam = ""
override func viewDidLoad() {
super.viewDidLoad()
ref = Database.database().reference()
contentTextView.delegate = self
switch FinalTeam {
case "Lech Poznań":
//imageView.image = UIImage(named: "leszek")
refHandleTitle = ref?.child("News/Lech/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Lech/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Legia Warszawa":
//imageView.image = UIImage(named: "legia")
refHandleTitle = ref?.child("News/Legia/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Legia/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Lechia Gdańsk":
//imageView.image = UIImage(named: "lechia")
refHandleTitle = ref?.child("News/Lechia/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Lechia/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Wisła Płock":
//imageView.image = UIImage(named: "wisla_p")
refHandleTitle = ref?.child("News/Wisła_P/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Wisła_P/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Wisła Kraków":
//imageView.image = UIImage(named: "wisla_k")
refHandleTitle = ref?.child("News/Wisła_K/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Wisła_K/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Jagiellonia Białystok":
//imageView.image = UIImage(named: "jaga")
refHandleTitle = ref?.child("News/Jaga/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Jaga/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Piast Gliwice":
// imageView.image = UIImage(named: "piast")
refHandleTitle = ref?.child("News/Piast/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Piast/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Pogoń Szczecin":
// imageView.image = UIImage(named: "pogon")
refHandleTitle = ref?.child("News/Pogoń/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Pogoń/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Korona Kielce":
// imageView.image = UIImage(named: "korona")
refHandleTitle = ref?.child("News/Korona/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Korona/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Cracovia":
//imageView.image = UIImage(named: "cracovia")
refHandleTitle = ref?.child("News/Cracovia/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Cracovia/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Śląsk Wrocław":
// imageView.image = UIImage(named: "slask")
refHandleTitle = ref?.child("News/Śląsk/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Śląsk/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Miedź Legnica":
// imageView.image = UIImage(named: "miedz")
refHandleTitle = ref?.child("News/Miedź/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Miedź/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Zagłębie Sosnowiec":
// imageView.image = UIImage(named: "zaglebie_s")
refHandleTitle = ref?.child("News/Zagłębie_S/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Zagłębie_S/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Zagłębie Lubin":
// imageView.image = UIImage(named: "zaglebie_l")
refHandleTitle = ref?.child("News/Zagłębie_L/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Zagłębie_L/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Górnik Zabrze":
// imageView.image = UIImage(named: "gornik")
refHandleTitle = ref?.child("News/Górnik/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Górnik/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
case "Arka Gdynia":
// imageView.image = UIImage(named: "arka")
refHandleTitle = ref?.child("News/Arka/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Arka/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
default:
// imageView.image = UIImage(named: "lech")
refHandleTitle = ref?.child("News/Lech/Naglowek").observe(.value, with: { (snapshot) in
let titlePost = snapshot.value as? String
if let actualTitlePost = titlePost {
self.news.append(actualTitlePost)
}
self.titleLabel.text = titlePost
})
refHandleContent = ref?.child("News/Lech/Tresc").observe(.value, with: { (snapshot) in
let contentPost = snapshot.value as? String
if let actualContentPost = contentPost {
self.news.append(actualContentPost)
}
self.contentTextView.text = contentPost
})
}
}
}
最佳答案
我们需要知道您的“子” View Controller 和“非 TabBarController”之间的关系,以给出哪种方式是合适的。
一般来说有几个程序,具体取决于具体情况。首先是转发数据。当您创建一个新屏幕并想要传递前一个屏幕的数据时,通常会使用它:
private func showUsersViewController(_ users: [User]) {
let controller = UIStoryboard(name: "User", bundle: nil).instantiateViewController(withIdentifier: "UserListViewController") as! UserListViewController
controller.users = users
present(controller, animated: true, completion: nil)
// navigationController?.pushViewController(controller, animated: true)
}
但是,如果您想取回信息,例如在上述情况下,当用户被按下时,您将在此屏幕上执行某些操作,则可以使用委托(delegate)。
private func showUsersViewController(_ users: [User]) {
let controller = UIStoryboard(name: "User", bundle: nil).instantiateViewController(withIdentifier: "UserListViewController") as! UserListViewController
controller.users = users
controller.delegate = self
present(controller, animated: true, completion: nil)
// navigationController?.pushViewController(controller, animated: true)
}
在用户列表 Controller 中
protocol UserListViewControllerDelegate: class {
func userListViewController(_ sender: UserListViewController, didSelectUser user: User)
}
class UserListViewController: UIViewController, UITableViewDelegate {
weak var delegate: UserListViewControllerDelegate?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
delegate?.userListViewController(self, didSelectUser: users[indexPath.row])
}
}
然后回到主视图 Controller
extension ViewController: UserListViewControllerDelegate {
func userListViewController(_ sender: UserListViewController, didSelectUser user: User) {
self.user = user
self.reloadUI()
}
}
因此,在这种情况下,您同时有 2 个 View Controller ,它们可以在两个方向上相互通信。
这两个过程通常足以解决两个 View Controller 之间的几乎所有通信。但还有其他方法,例如使用选择器、使用通知、MVVM...
关于ios - 如何将数据从 TabBarController View 之一传递到非 TabBarController View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494779/
我是一名优秀的程序员,十分优秀!