UITableView
Aus Wikizone
Version vom 8. Januar 2023, 14:09 Uhr von 134.3.86.14 (Diskussion)
import UIKit
struct Song {
let title: String
let frequency: Float
}
import UIKit
class EditViewController: UIViewController {
// Model-Objekte
var frequency: Double? // will receive actual frequency from MetronomeViewController
//var songs = [Song]()
var songs: [Song] = [
Song(title: "Arm aber reich", frequency: 124),
Song(title: "Rebell", frequency: 82.5),
Song(title: "Herz hat recht", frequency: 98)
]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self // catch datasource delegate
tableView.delegate = self // catch view delegate
}
}
/**
Implement UITableViewDataSource Protocol which is responsible for telling tableview how many cells needed and how to fill them
*/
extension EditViewController: UITableViewDataSource{
// How many rows we need?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return songs.count
}
// Called for every dataitem -> let's create a cell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SongCell", for: indexPath)
let strSongNumber = String(format:"%d / %d",(indexPath.row + 1), (indexPath.count + 1) )
cell.textLabel?.text = "\(strSongNumber) \(songs[indexPath.row].title)"
let strFrequency = String(format:"%.1f bpm",songs[indexPath.row].frequency)
cell.detailTextLabel?.text = strFrequency
return cell
}
}
/**
Implement UITableViewDelegate
Methods for managing selections, configuring section headers and footers, deleting and reordering cells, and performing other actions in a table view.
*/
extension EditViewController: UITableViewDelegate{
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("row: \(indexPath.row) ")
}
}