Video: Grupperede observationer i Maple I 2024
Tabellvisningen i en iOS-app er en kompleks visning som krever komplekse delegater, og viser ofte data i en kolonnevisning. Den presenterer data i flere rader, med hver rad delt inn i kolonner. Du kan se en tabellvisning i Tic-Tac-Toe på skjermbildet Administrer Tic-Tac-Toe-brukere, som vist nedenfor.
Du kan legge til en tabellvisning som du ser på et storyboard. Du kan også angi flere attributter av visningen i storyboardet via Attribut inspektøren. For at innholdet skal vises i et bord, må det imidlertid ha en datakilde delegat - det vil si en klasse som implementerer UITableViewDataSource-protokollen.
For tabellen som vises i figuren nedenfor, er datakildedelegasjonen brukerhåndteringsvisningskontrollen (implementert i TTTUserManagerViewController.m og.h). Denne delegaten er også konfigurert via storyboardet, som vist ovenfor.
Følgende kode viser datakildemetoden cellForRowAtIndexPath:
#pragma Tabellvisning Datakilde metoder - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {statisk NSString * userTableIdentifier = @ "UserItem"; UITableViewCell * celle = [tableView dequeueReusableCellWithIdentifier: userTableIdentifier]; hvis (celle == nil) {celle = [[UITableViewCell allokere] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: userTableIdentifier];} celle. textLabel. text = [[userTableData objectAtIndex: indexPath. rad] userid]; returnere celle;} - (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) seksjon {return [userTableData count];}
I den forrige koden er nøkkelmetoden i TableViewDelegate protokollen (den som angir hvordan samspill med tabellvisningen håndteres) er metoden didSelectRowAtIndexPath, som vist neste. Innholdet i den valgte raden (det vil si brukerens brukernavn) blir lest fra den valgte cellen. Ved bruk av userid blir brukerobjektet oppsøkt og bufret i medlemsvariabelen valgt bruker.
#pragma Tabellvisning Delegate metoder - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {UITableViewCell * celle = [tableView cellForRowAtIndexPath: indexPath]; NSString * cellText = celle. textLabel. tekst; … selectedUser = [userManager getUserGivenUserid: cellText];}