2010-12-14 13 views
17

Mam tableview z niektórymi nazwami w każdej komórce, jak mogę uzyskać tę nazwę po wybraniu wiersza?Jak uzyskać tytuł wiersza zaznaczonego w widoku UITable

wiem, że trzeba użyć metody delegata

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

ale jak mogę dostać ten tytuł tego wiersza?

góry dzięki

pozdrowienia

+0

Wiersze nie mają tytułów. Co próbujesz zrobić? –

+0

mam na myśli każdą komórkę w UItableview – appleDE

Odpowiedz

54
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; 
    NSString *cellText = selectedCell.textLabel.text; 
} 

Ten fragment kodu pobiera wybraną komórkę i przechowuje jego właściwość text w postaci NSString.


Jednak Nie polecam tego. Lepiej jest zachować oddzielne warstwy danych i prezentacji. Użyj magazynu danych zaplecza (na przykład tablicy) i uzyskaj do niego dostęp, używając danych z przekazanego obiektu indexPath (np. Indeksu, który będzie używany do uzyskania dostępu do tablicy). Ten magazyn danych będzie taki sam, jak używany do wypełniania tabeli.

+0

Awesome! Wielkie dzięki. – iDev

9

Zakładając, że używasz standardowego UITableViewCell, można uzyskać komórkę za pomocą

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

następnie uzyskać dostęp do właściwości widoku właściwość tekst poprzez:

cell.textLabel.text 
cell.detailTextLabel.text 
+0

I co robi? :-) – Eiko

+0

tak, co to jest? – appleDE

+0

(+1) Przydatny dla mnie nawet drobny błąd literówki. w kodzie jest to UITableViewCell i piszesz UITableView (ale piszesz to poprawnie w powyższym tekście. – HpTerm

2

Po zarejestrowaniu jednej z klas jako delegata za pośrednictwem właściwości delegata UITableView po prostu zaimplementowano metodę tableView:didSelectRowAtIndexPath:, która byłaby wywoływana, gdy użytkownik wybrał wiersz. (Patrz UITableViewDelegate Protocol Reference aby uzyskać więcej informacji.)

Następnie można wyodrębnić tekst etykiety z wybranej komórki za pośrednictwem ...

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
     NSString *cellLabelText = cell.textLabel.text; 
    } 

..if to jest naprawdę to, czego potrzebują.

3

można uzyskać dostęp każdy wiersz swojego uitabelview stosując następujący (uitableview-) Funkcja:

cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 

drodze, aby uzyskać dostęp do tableview innymi metodami niż metody delegata UITableView jest, trzeba go podłączyć w IB (np ..)

nadzieję, że pomoże

0
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *rowTitle=[tableView cellForRowAtIndexPath:indexPath].textLabel.text; 
} 

Tutaj

[tableView cellForRowAtIndexPath: indexPath] podaje wybraną komórkę, a następnie .textLabel.text podaje etykietę dla tej komórki.

Powiązane problemy