我如何在此uitable视图中添加额外的列,并填充已经获取的数据



在以下代码中,我获取一些数据。

当前,该表显示了一列" hometeam"。

我所需的输出是在uitableview中具有多个列。

我获取了以下代码中可以看到的其他列的数组。

import UIKit
class ShowResultsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var personalPlayerId: String?
var communityId: String?
var personalPlayer2Id: String?
var postString: String?
var homeTeam = [String?]()
var homePlayer = [String?]()
var homeGoals = [String?]()
var awayTeam = [String?]()
var awayPlayer = [String?]()
var awayGoals = [String?]()
var matchId = [String?]()
var tempResult: Int?
var selectedMatch: String?
var headToHead: Bool?
@IBOutlet weak var leagueTableView: UITableView!
override func viewDidLoad() {
    super.viewDidLoad()

    self.leagueTableView.delegate = self
    self.leagueTableView.dataSource = self

}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.homeTeam.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let title = self.homeTeam[indexPath.row]
    let cell = UITableViewCell()
    return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tempResult = indexPath.row
    if let tempShowResult = (self.homeTeam[tempResult!]){
        self.selectedMatch = tempShowResult
    }
}
override func viewDidAppear(_ animated: Bool) {
    let myUrl = URL(string: "http://www.???.uk/???/getLeagueResults.php")
    var request = URLRequest(url:myUrl!)
    request.httpMethod = "POST"
    if self.headToHead == true {
        self.postString = "player_id=(self.personalPlayerId!)&player2_id=(personalPlayer2Id!)&community_id=(communityId!)";
    }else{
        if self.headToHead == false{
            self.postString = "player_id=(self.personalPlayerId!)&community_id=(communityId!)";
        }
    }
    request.httpBody = self.postString?.data(using: String.Encoding.utf8);
    let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in
        DispatchQueue.main.async
            {
                do{
                    let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject]
                    print (json!)

                        // GET DATA FOR TABLE COLUMNS

                            if let arr = json?["allPersonalLeagueStats"] as? [[String:String]] {
                                self.homeTeam = arr.flatMap { $0["player1_team"]!}
                                self.homePlayer = arr.flatMap { $0["player1_name"]!}
                                self.homeGoals = arr.flatMap { $0["player1_goals"]!}
                                self.awayTeam = arr.flatMap { $0["player2_team"]!}
                                self.awayPlayer = arr.flatMap { $0["player2_name"]!}
                                self.awayGoals = arr.flatMap { $0["player2_goals"]!}
                                self.matchId = arr.flatMap { $0["results_id"]!}
                            }

                       self.leagueTableView.reloadData()
                    }

                catch{
                    print(error)
                }
        }
    }
    task.resume()

}

}

如何在此表中添加更多列以显示额外的列;home_playerhome_goalaway_playeraway_teamaway_goals

我希望输出在表中表示以下内容:

+---------------+---------+-------+-------+------------+--------------+ | Bobby Charles | Man Utd | 2 | 3 | Fiorentina| Andrew James | | Ryan Stood | Arsenal | 0 | 1 | Chelsea | Bobby Charles| | Bobby Charles | Chelsea | 0 | 2 | Liverpool | Ryan Stood | +---------------+---------+-------+-------+------------+--------------+

  1. 拿一个uitaiteViewCell
  2. 在此单元格中添加六个Uilabels
  3. 当您为每个数组有不同的数组时,在cellForRowAtindexPath中将数据添加到这些标签中。

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:    NSIndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! MyTableViewCell
            cell.label1.text = self.homeTeam[indexPath.row]
            cell.label2.text = self.homePlayer[indexPath.row]
            cell.label3.text = self.homeGoal[indexPath.row]
            cell.label4.text = self.awayTeam[indexPath.row]
            cell.label5.text = self.awayPlayer[indexPath.row]
            cell.label6.text = self.awayGoals[indexPath.row]
            return cell
    }
    

注意:保持许多阵列不是一个好主意。

使用 struct ,要处理数据。

请确保您的含义是什么。

您的cellForRowAtindexPath是如此不当。您在那里什么都没做。

要回答您的问题,您将必须在附加home_playerhome_goalaway_playeraway_teamaway_goals附加数组,然后因此将它们配置在cellForRowAtindexPath中。尽管还有其他方法可以实现相同的方法。

注意:我建议您在UITableView上阅读一些教程。

最新更新