UITableView

Introducere

UITableView este util atunci când se doreşte afişarea unei liste pe ecran, cea mai bună alegere este UITablewView.

Cuprins

UITablewView este un tabel cu o singură coloană (datorită dimensiunilor reduse ale ecranului) şi mai multe linii. UITableView poate avea şi secţiuni (sections) care împart liniile pe categorii (de exemplu, în agenda telefonică contactele sunt împărţite în funcţie de prima literă a numelui). Secţiunile au asociat un index în table view, iar liniile au un index asociat în secţiune.

Acest View poate fi văzut în majoritatea aplicaţiilor iOS. Uitaţi câteva exemple:

Fiecare linie dintr-un UITableView este reprezentată de un UITablewViewCell care este o subclasa a lui UIView.
UITablewViewCell are următoarele proprietăţi: un textLabel, un detailedTextLabel şi un UIImageView. Dar fiind o subclasă a lui UIView, putem adăuga într-un UITablewViewCell orice element: UIButton, UISegmentedControll, chiar şi un alt UIView. Se foloseşte proprietatea contentView pentru a adăuga un element într-un UITablewViewCell.

[self.cell.contentView addSubview:button]

Datasource şi delegate

Un UITableView trebuie să aibă un obiect care implementează protocolul UITableViewDataSource şi un obiect care implementează protocolul UITablewViewDelegate (poate fi un singur obiect care îndeplineşte ambele roluri).

Obiectul care va juca rolul de DataSource va trebui să ofere UITableView-ului datele necesare pentru a umple liniile tabelului. Metodele ce trebuie implementate obligatoriu sunt:

  • -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    • câte linii va avea secţiunea respectivă
  • -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    • se returnează UITablewViewCell-ul pentru index-ul respectiv

Obiectul care va juca rolul de delegate va spune UITableView-ului cum să reacţioneze în urma evenimentelor: când se face click pe un cell, când se doreşte editarea unui cell, ştergerea unui cell etc. Nu sunt metode în acest protocol care trebuie implementate obligatoriu, însa iată câteva importante:

  • -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
    • se apelează după ce se face click pe un cell. De cele mai multe ori, în această metodă se va face push la alt view controller.
  • -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
    • se modifică lăţimea unei anumite celule reprezentate de un index
  • -(void)tableView:( UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath;
    • se apeleaza in momentul in care table view-ul intra in “editing mode”

UITableViewController este un UIViewController care implementează protocoalele UITableViewDataSource şi UITableViewDelegate şi care are ca view principal un UITableView.

programare_ios/curs/curs8.txt · Ultima modificare: 2013/07/28 16:42 de către bogdan.vlad
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0