torsdag 9 februari 12
UITableView – tabellvyer
Applikationsutveckling för iPhone och iPad, 725G60
Alek Åström, [email protected]
torsdag 9 februari 12
Agenda
• UITableView
• exempel / användningsområden
• mekanik
• delegate och datasource
• cellForRowAtIndexPath
• Konstruera UITableViews med Storyboards
• Statiska
• Dynamiska
• Utanför dagens agenda
• Dynamiska ändringar, editing mode, UITableViewCell
torsdag 9 februari 12
UITableView – Hjälten i UIKit
Enkel definition: Vy som hanterar rader av innehåll
torsdag 9 februari 12
Exempel på UITableViews i appar
torsdag 9 februari 12
UITableViews – Vad är de och vad gör de så bra?
• Innehåller vertikalt ordnade celler
• Varje cell har egna vyer!
• Återanvänder celler
• Minimal minnesanvändning
• Maximal responsivitet
• Flexibilitet!
• Alla celler kan vara olika
• Headers/footers/sektioner
• Editing mode
• Multi-row selection
torsdag 9 februari 12
UITableView – Anatomi
• Ärver från UIScrollView
• Styrs generellt av en UITableViewController
• Celler är instanser av UITableViewCell
• Hämtar data från UITableViewDataSource
• Hämtar beteende från UITableViewDelegate
• Celler är uppdelade i sektioner
• Varje sektion har en valbar header och footer
torsdag 9 februari 12
UITableView – Återanvändning av celler
• Alla celler har en reuseIdentifiersträng
Cell 10
Reuse queue:
”testCell”
• Används för att återanvända
samma typer av celler
• Tabellen ropar på
cellForRowAtIndexPath när en ny
cell behövs
• dataSource-implementeraren
hämtar rätt sorts cell från
tabellens reuse queue
• Om kön är tom skapar
tabellen en ny cell
• När cell åker ur bild hamnar den i
sin sorts reuse queue
torsdag 9 februari 12
Cell 21
UITableViewDataSource
• Hämtar data åt tabellen
• Två obligatoriska metoder + en semi-obligatorisk
• numberOfRowsInSection – Hur många celler i varje sektion?
• cellForRowAtIndexPath – Sätt upp och returnera en cell
• (numberOfSectionsInTableView) – Hur många sektioner finns? (default 1)
• titleFor Header/Footer InSection
• commitEditingStyle: forRowAtIndexPath – hör ihop med ändring (kommer
senare)
• + ett gäng till
torsdag 9 februari 12
UITableViewDelegate
• Sätter beteende för tabellen
• didSelectRowAtIndexPath – Körs när en cell markeras
• viewFor Header/Footer inSection – Anger egna vyer för headers/footers
• editingStyleForRowAtIndexPath – Hur ska cellen bete sig i editing mode?
• … och mycket mer
torsdag 9 februari 12
UITableView – Hur gör jag?
• Absolut lättast med storyboard
• Static
• Används för ett statiskt antal celler som tex ett formulär
• Behöver ej implementera UITableViewDataSource!
• Dynamic
• Används för ett dynamiskt antal celler
• Bygg olika sorts prototypceller
• Hämta rätt cell för rätt rad i din UITableViewController
torsdag 9 februari 12
Demo time!
torsdag 9 februari 12
Läs mer
• Table View Programming Guide
• Referenser för UITableView, UITableViewDataSource, UITableViewDelegate
• Se upp för lösningar som ej använder storyboard för celladdning! De är
jobbiga.
• Se kommande screencasts om UITableViewCell och editing mode
torsdag 9 februari 12
Frågor?
• Ställ gärna frågor på kursforumet
• Maila [email protected]
torsdag 9 februari 12
Tack!
torsdag 9 februari 12
torsdag 9 februari 12