2011-10-19 18 views

cevap

8

İki Etiketler ve Cell almak olmalı ... ve cellForRowAtIndexPath yönteminde Yaz

UITableViewCell

ait subview bu bu Label hem ekleyin.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

    for(UIView *eachView in [cell subviews]) 
     [eachView removeFromSuperview]; 

    //Initialize Label 
    UILabel *lbl1 = [[UILabel alloc]initWithFrame:YOURFRAME]; 
    [lbl1 setFont:[UIFont fontWithName:@"FontName" size:12.0]]; 
    [lbl1 setTextColor:[UIColor grayColor]]; 
    lbl1.text = YOUR CELL TEXT; 
    [cell addSubview:lbl1]; 
    [lbl1 release]; 

    UILabel *lbl2 = [[UILabel alloc]initWithFrame:YOURFRAME]; 
    [lbl2 setFont:[UIFont fontWithName:@"FontName" size:12.0]]; 
    [lbl2 setTextColor:[UIColor blackColor]]; 
    lbl2.text = YOUR CELL TEXT; 
    [cel2 addSubview:lbl2]; 
    [lbl2 release]; 

    return cell; 
} 

GÜNCELLEME: Kodlama here

Mutlu tanımlamak olarak

bununla birlikte aynı zamanda Özel hücreyi oluşturabilir ..

+0

'için ([hücre alt görüntülerinde] Her Uyanık *) [eachView removeFromSuperview];' fantastik. Bunun için +1, –

+1

'için (UIView * [hücre alt görünümleri].Diğer form çöküyor (veya önceki Cocoa'da çökmek için kullanılıyor). –

+0

cell.textlabel? – SampathKumar

4

tek yolu onların arka plan olarak farklı renklerle subview yeni etiketleri eklemektir.

0

özel hücre ile gidip şartının başlatmak veya UITableViewCell kullanabilir ve o istenen formatlara uygun olarak birden UILabels ekleyin Ya.

Örneğin ... için

, Bir UILabel bölümlerinin için yazı tipini veya rengini değiştirmek mümkün değildir

static NSString *MyIdentifier [email protected]"MyIdentifier"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

if (cell == nil) 
{  
    cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier];  
} 

UILabel *lblPhone = [[UILabel alloc] initwithFrame:CGRectMake(5, 5, 150, 30)]; 
lblPhone.text = @"Tel."; 
[cell addSubView: lblPhone]; 
+0

Hücreye, ancak düzenlemenin davranışının mantıklı olması için hücre görünümüne değil, hücrenin içerik görünümüne eklemelisiniz. Ayrıca, bu, varsayılan textLabel çerçevesinin ayarlanmasını gerektirir, böylece hiçbir çakışma olmaz. – jbat100

0

. Burada en kolay yol bir hücre alt sınıfı oluşturmak ve arayüz oluşturucu ya da kod olarak iki etiket eklemektir. This post nasıl "thouching" olarak iki etiket metnini isterseniz dinamik etiket boyutunu ayarlamak böylece etiketin metnin boyutunu hesaplamak için gösterir.

5

birçok kullanım ait subviews olarak etiketleri ekleme tekniği Hücre ve belki de hücrelerin yeniden kullanılmasıyla beklenmedik sonuçlara ulaşırsınız. Apple zaten her açıdan özelleştirilebilen şablonlar sunuyor. Sizin durumunuzda, özel hücreler kullanmadan ve etiket eklemeden, UITableViewCellStyleValue2 şablonunu kullanacağım, mevcut etiketlerle ve , cell.detailTextLabel ve cell.accessoryView gibi aksesuarlarla birlikte oynayabiliyorsunuz, ara yüzünüze daha fazla veya daha az benzeyen bu kod parçasına bakın:

- (UITableViewCell *)tableView:(UITableView *)tableView 
        cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    static NSString *CellID = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellID]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 
     reuseIdentifier:CellIdentifier] autorelease]; 
    } 

     cell.textLabel.contentMode=UIViewContentModeScaleToFill; 
     cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; 
     cell.textLabel.baselineAdjustment=UIBaselineAdjustmentAlignCenters; 
     cell.textLabel.textAlignment=UITextAlignmentCenter; 
     cell.textLabel.font=[UIFont boldSystemFontOfSize:22]; 
     cell.textLabel.textColor=[UIColor lightGrayColor]; 

     cell.detailTextLabel.contentMode=UIViewContentModeScaleToFill; 
     cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap; 
     cell.detailTextLabel.baselineAdjustment=UIBaselineAdjustmentAlignCenters; 
     cell.detailTextLabel.textAlignment=UITextAlignmentLeft; 
     cell.detailTextLabel.font=[UIFont boldSystemFontOfSize:23]; 
     cell.detailTextLabel.textColor=[UIColor blackColor]; 

     [email protected]"Tel.:"; 
     [email protected]"+3912345678"; 

     UIImageView *imageView = [[UIImageView alloc] initWithImage: 
            [UIImage imageNamed:@"phone.png"]]; 
     cell.accessoryView = imageView; 
     [imageView release]; 
     return cell; 
} 

Bu yardımcı olur umarım.

İlgili konular