Ios 如何基于分段控件选择更新表视图中的文本标签?
我正在创建一个新闻提要。我有一个视图控制器,允许用户填写信息和点击帖子。部分信息涉及在分段控件中选择XBOX、PS4或PC。因此,如果他们选择XBOX,那么当他们发布到新闻提要时,表格单元格内的文本标签应该显示XBOX。由于我对iOS编程比较陌生,所以我很难连接所有东西 这是允许您发布到新闻源的视图控制器:Ios 如何基于分段控件选择更新表视图中的文本标签?,ios,swift,database,uitableview,user-interface,Ios,Swift,Database,Uitableview,User Interface,我正在创建一个新闻提要。我有一个视图控制器,允许用户填写信息和点击帖子。部分信息涉及在分段控件中选择XBOX、PS4或PC。因此,如果他们选择XBOX,那么当他们发布到新闻提要时,表格单元格内的文本标签应该显示XBOX。由于我对iOS编程比较陌生,所以我很难连接所有东西 这是允许您发布到新闻源的视图控制器: import Foundation import UIKit import Firebase import FirebaseDatabase class NewPost: UIViewC
import Foundation
import UIKit
import Firebase
import FirebaseDatabase
class NewPost: UIViewController, UITextViewDelegate {
@IBOutlet var enterGamertag: UITextField!
@IBOutlet var enterMessage: UITextField!
@IBOutlet var platformSegmentedControl: UISegmentedControl!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//ADDTOLIST BUTTON
@IBAction func addToList(_ sender: UIButton) {
let postRef = Database.database().reference().child("posts").childByAutoId()
let postObject = [
"gamerTag": enterGamertag.text as Any,
"bodytext": enterMessage.text as Any,
"platformSelected": platformSegmentedControl.selectedSegmentIndex as Any,
"timestamp": [".sv":"timestamp"]
] as [String:Any]
postRef.setValue(postObject, withCompletionBlock: { error, ref in
if error == nil {
self.dismiss(animated: true, completion: nil)
} else {
// Handle the error
}
})
}
//dismiss keyboard
@IBAction func dismissKeyboard(_ sender: UITextField) {
self.resignFirstResponder()
}
@IBAction func micPressed(_ sender: UIButton) {
if sender.isSelected {
sender.isSelected = false
} else {
sender.isSelected = true
}
}
@IBAction func logOutPressed(_ sender: UIButton) {
try! Auth.auth().signOut()
performSegue(withIdentifier: "logOut", sender: self)
}
@IBAction func platformSegmentPressed(_ sender: UISegmentedControl) {
let getIndex = platformSegmentedControl.selectedSegmentIndex
switch (getIndex) {
case 0:
default:
<#code#>
}
}
}
以下是发布配置文件类:
import Foundation
class Post {
enum platform {
case XBOX1
case PS4
case PC
}
var id: String
var gamerTag: String
var bodyText: String
var timestamp: Double
var platform: platform = .XBOX1
init(id: String, gamerTag: String, bodyText: String, timestamp: Double, platform: platform) {
self.id = id
self.gamerTag = gamerTag
self.bodyText = bodyText
self.timestamp = timestamp
self.platform = platform
}
}
下面是表格单元类:
import UIKit
class PostTableViewCell: UITableViewCell {
@IBOutlet weak var customMessageBody: UILabel!
@IBOutlet weak var customConsole: UILabel!
@IBOutlet weak var ifMicUsed: UIImageView!
@IBOutlet weak var timeAdded: UILabel!
@IBOutlet weak var gameMode: UILabel!
@IBOutlet weak var customGamerTag: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func set(post:Post){
customGamerTag.text = post.gamerTag
customMessageBody.text = post.bodyText
timeAdded.text = "\(post.timestamp) minutes ago."
customConsole.text = "\(post.platform)"
}
}
那有很多代码要处理。你能解释一下你的问题吗?我知道这似乎需要做很多工作,但是如果你不投入工作来帮助回答者,你就不可能得到任何答案。正如@divibisan所说的,试着把负责在片段更改时调用视图的代码放进去。基本思路是:当您按下“分段”按钮时,用新数据重新加载tableview。我可以看到您正在使用Firebase作为API,是否要根据可观察更新更新标签?
import UIKit
class PostTableViewCell: UITableViewCell {
@IBOutlet weak var customMessageBody: UILabel!
@IBOutlet weak var customConsole: UILabel!
@IBOutlet weak var ifMicUsed: UIImageView!
@IBOutlet weak var timeAdded: UILabel!
@IBOutlet weak var gameMode: UILabel!
@IBOutlet weak var customGamerTag: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func set(post:Post){
customGamerTag.text = post.gamerTag
customMessageBody.text = post.bodyText
timeAdded.text = "\(post.timestamp) minutes ago."
customConsole.text = "\(post.platform)"
}
}