2010-12-14 22 views
17

'da seçilen sıranın başlığı nasıl seçilir? Her hücrede bazı isimlerle ilgili tablo görünümü var, satırı seçerken bu ismi nasıl alabilirim?UITableview

i temsilci yöntemini

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

kullanmak zorunda ama nasıl ben bu satırın o unvanı alabilirsiniz biliyor? peşin

sayesinde

Saygılarımızla

+0

Satırların başlığı yok. Ne yapmaya çalışıyorsun? –

+0

UItableview – appleDE

cevap

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

Bu snippet, seçili hücreyi alır ve NSString ürününün text özelliğini depolar. Ancak


, bu önermiyoruz. Veri ve sunum katmanlarını ayrı tutmak daha iyidir. Bir destek veri deposunu (ör. Bir dizi) kullanın ve iletilen indexPath nesnesindeki verileri kullanarak (ör. Diziye erişmek için kullanılacak dizini) erişin. Bu veri deposu, tabloyu doldurmak için kullanılanla aynı olacaktır.

+0

Awesome! Çok teşekkürler. – iDev

9

standart bir UITableViewCell kullanıyorsanız varsayarsak, o zaman aracılığıyla metin mülkiyet görünüm özelliklerine erişmek

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

kullanarak hücreyi alabilirsiniz:

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

'daki her bir hücreyi kastediyorum. Bu ne yapar? :-) – Eiko

+0

evet ne iş yapıyor? – appleDE

+0

(+1) Küçük yazım hatası bile bana faydalı. Kodda UITableViewCell ve UITableView yazıyorsunuz (ancak yukarıdaki metni doğru yazıyorsunuz). – HpTerm

2

Sınıflarınızdan birini UITableView delege özelliği aracılığıyla bir temsilci olarak kaydettikten sonra, kullanıcı bir satır seçtiğinde çağrılacak olan tableView:didSelectRowAtIndexPath: yöntemini uygulamanız yeterlidir. (Daha fazla bilgi için UITableViewDelegate Protocol Reference bakınız.)

Ardından üzerinden seçilen hücreden Etiket metnini ayıklamak olabilir ... Bu ..if

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

size gereken gerçekten budur.

aşağıdaki (uitableview-) işlevini kullanarak uitabelview her satır erişebilir
3

: UITableView en temsilci yönteminin dışındaki yöntemlerde sizin tableView erişmek için, bu arada

cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 

, bunu kanca zorunda IB (örneğin ..)

o İşte

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

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

,

yardımcı olur umarım

[tableView cellForRowAtIndexPath: indexPath] size seçili hücreyi verir ve daha sonra .textLabel.text size bu hücrenin etiketini verir.