UITableView
Aus Wikizone
Version vom 8. Januar 2023, 13:36 Uhr von 134.3.86.14 (Diskussion) (Die Seite wurde neu angelegt: „ == Quickstart == * Öffne dein Storyboard oder deine XIB-Datei und ziehe ein '''UITableView-Element''' aus der Bibliothek auf dein View. * Ziehe ein '''UITabl…“)
Quickstart
- Öffne dein Storyboard oder deine XIB-Datei und ziehe ein UITableView-Element aus der Bibliothek auf dein View.
- Ziehe ein UITableCell-Element in das UITableView-Element
- Vergebe einen Identifier für das Cell-Element z.B. ReusableCell
- Erstelle ein Outlet für den das UITableView-Element
- Implementiere das UITableViewDataSource-Protokoll in deiner Klasse. Hierdurch wird der tableView wenn er geladen wird einen Datenrequest ausführen. Eine Extension zum Implementieren sieht etwa so aus:
extension MyViewController: UITableViewDataSource{}
- In der viewDidLoad Funktion delegiere die DataSource des TableViews auf den Controller
tableView.dataSource = self
Beispiele
Basic UITableView
Siehe auch Quickstart
import UIKit
struct Song {
let title: String
let frequency: Float
}
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
}
}
// implement UITableViewDataSource Protocol
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
}
}