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

我正在创建一个新闻提要。我有一个视图控制器,允许用户填写信息和点击帖子。部分信息涉及在分段控件中选择XBOX、PS4或PC。因此,如果他们选择XBOX,那么当他们发布到新闻提要时,表格单元格内的文本标签应该显示XBOX。由于我对iOS编程比较陌生,所以我很难连接所有东西

这是允许您发布到新闻源的视图控制器:

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)"


    }

}