0
我是一個應用程序的工作,我必須在TableView中顯示足球裝置。在UITableView中創建子部分(Swift 2.3)
表視圖應該是這樣的(見上圖) 以樹視圖應該是這樣的:
Date
League
Fixture1
Fixture2
League2
Fixture1
Fixture2
Date
League
Fixture1
Fixture2
League2
Fixture1
Fixture2
所以我爲了管理我的虛擬數據創建的DataManager :
import Foundation
import RxSwift
import RxCocoa
class DataManager {
var games = [Int:[League:[Game]]]()
static let shared = DataManager()
private init() {
self.buildDummyData()
}
func buildDummyData() {
let today = NSDate()
let tomorrow = NSCalendar.currentCalendar()
.dateByAddingUnit(
.Day,
value: 1,
toDate: today,
options: []
)
let day_after = NSCalendar.currentCalendar()
.dateByAddingUnit(
.Day,
value: 2,
toDate: today,
options: []
)
let premierLeague = League(title: "Premier League", iName: "england")
let ligueUn = League(title: "Ligue 1", iName: "France Contest")
let europaLeague = League(title: "Europa League", iName: "Europa Contest")
let game1 = Game(ftName: "Monaco", ftLogo: "sampleLogo", stName: "Paris SG", stLogo: "sampleLogo", time: "16:30", date: today, league: ligueUn)
let game2 = Game(ftName: "Man U.", ftLogo: "sampleLogo", stName: "Liverpool", stLogo: "sampleLogo", time: "20:30", date: tomorrow!, league: premierLeague)
let game3 = Game(ftName: "Celta Vigo", ftLogo: "sampleLogo", stName: "Man U.", stLogo: "sampleLogo", time: "19:45", date: day_after!, league: europaLeague)
let game4 = Game(ftName: "ASSE", ftLogo: "sampleLogo", stName: "Man U.", stLogo: "sampleLogo", time: "19:45", date: day_after!, league: europaLeague)
games = [0: [ligueUn: [game1]], 1: [premierLeague: [game2]], 2: [europaLeague: [game3, game4]]]
}
}
而且我ViewController.swift:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
let dataManager = DataManager.shared
let currentDate = NSDate()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tableView.delegate = self
self.tableView.dataSource = self
tableView.registerNib(UINib(nibName: "GameTableViewCell", bundle: nil), forCellReuseIdentifier: "gameCell")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataManager.games.count
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRectMake(0, 0, 350, 60))
let label = UILabel(frame: CGRectMake(0, 13, 350, 33))
view.addSubview(label)
label.text = "Today"
return view
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 60.0
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return dataManager.games.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("gameCell", forIndexPath: indexPath) as! GameTableViewCell
// var arrayOfLeagueAndGame = dataManager.games[indexPath.section]
// var arrayOfGame = arrayOfLeagueAndGame?.popFirst()
//
// cell.setupCell(arrayOfGame(indexPath.row))
return cell
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 50.0
}
}
所以我想看到這一點:
TODAY
Ligue 1
Monaco - PSG
TUESDAY 06 JUNE
Premier League
Man U. - Liverpool
WEDNESDAY 07 JUNE
Europa League
Celta Vigo - Man U.
ASSE - Man U.
我不知道從哪裏開始,如何處理這樣的嵌套數據。
感謝您的幫助!