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