UITableView: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 44: Zeile 44:
 
}
 
}
  
/**
+
/**
 
  Implement UITableViewDataSource Protocol which is responsible for telling tableview how many cells needed and how to fill them
 
  Implement UITableViewDataSource Protocol which is responsible for telling tableview how many cells needed and how to fill them
 
  */
 
  */
Zeile 63: Zeile 63:
 
}
 
}
  
/**
+
/**
 
  Implement UITableViewDelegate
 
  Implement UITableViewDelegate
  Methods for managing selections, configuring section headers and footers, deleting and reordering cells, and performing other actions in a table view.
+
  Methods for managing selections, configuring section headers and footers, deleting and reordering cells, and performing other actions in a table view.
 
  */
 
  */
 
extension EditViewController: UITableViewDelegate{
 
extension EditViewController: UITableViewDelegate{

Version vom 8. Januar 2023, 14:07 Uhr

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
}

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