2012-08-29 35 views
6

Daha fazla ayrıntı göstermek için hücrelerin üzerine tıklama yapması gereken bir uygulama yapıyorum. Özel bir hücre kullandım ve bunları bir UItableview'e ekledim. Hücreyi tıklattığımda iyi çalışıyor ve aşağı iniyor ve tekrar tıkladığımda, bu, hücrenin yüksekliğini değiştirerek yapılır. Gerçek özel hücre boyutu, normalde gösterdiğim hücreden daha büyük. Hücreyi tıklattığımda tüm hücre gösterilir. Sadece sahip olduğum konu, verilerin taşmasıdır. Hücre seçilmediğinde bu veriler gizlenmelidir. Sadece seçildiğinde bu tezler gösterilmelidir.UItable Cell Overflow ios

Farklı sanat eserlerine başvurdum, renk ayarını değiştirmeyi denedim, benim için işe yaramadı. Bu soruda aynı türde bir soruyu soruyorum iphone uitablecellview overflow, cevabı denedi ama işe yaramadı.

İhtiyacım olan şey, özel hücrenin alt kısmının genişletilmediğinde nasıl gizleneceğini ve genişletildiğinde gösterilmesini sağlamak ...!

Bunlar benim goruntuler var

Yüklendiği

When it is loaded When I click on a cell ben 2 hücreyi tıkladığınızda When I click on the 2nd cell When I click on the cell which is expanded
Ben hücreyi tıkladığınızda] bir hücreyi tıklayın hangi zaten genişletilmiş Bunlar kullanmış olduğum kod snips vardır ....

// Declaring the SearchResultTable. 
    CGRect filterFrame = CGRectMake(0,31, 320, 400); 
    self.searchResultTable = [[UITableView alloc] initWithFrame:filterFrame]; 
    self.searchResultTable.dataSource = self; 
    self.searchResultTable.delegate = self; 
    self.searchResultTable.backgroundColor = [UIColor whiteColor]; 
    self.searchResultTable.separatorStyle = UITableViewCellSeparatorStyleSingleLine; 
    self.searchResultTable.separatorColor = [UIColor lightGrayColor]; 
    [self.view addSubview:self.searchResultTable]; 

//Adding cells 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"ExpandedSearchResultTableCell"; 


    ExpandedSearchResultTableCell *cell = (ExpandedSearchResultTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 


    if (cell == nil) 
    { 
     cell.contentView.clipsToBounds = YES; 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ExpandedSearchResultTableCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 


    } 

    cell.productNameLable.text = @"Only this should be shown"; 
    cell.productListLabel.text = @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    cell.productTargetLable.text= @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded";; 


    return cell; 
} 


//on click event 
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 




    // Deselect cell 
    [tableView deselectRowAtIndexPath:indexPath animated:TRUE]; 

    // Toggle 'selected' state 
    BOOL isSelected = ![self cellIsSelected:indexPath]; 

    // Store cell 'selected' state keyed on indexPath 
    NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected]; 
    [selectedIndexes setObject:selectedIndex forKey:indexPath]; 

    // This is where magic happens... 
    [searchResultTable beginUpdates]; 
    [searchResultTable endUpdates]; 
} 

//Getting the height depending on expanded or not 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // If our cell is selected, return double height 
    if([self cellIsSelected:indexPath]) { 
     return kCellHeight * 3.0; 
    } 

    // Cell isn't selected so return single height 
    return kCellHeight; 
} 

cevap

1

Tamam ben bir tek bayrak ve didSelectRowAtIndexPath içinde cellForRowAtIndexPath hücre başvurusu kullanarak bitti. Ve benim lables'imi çöküşe ve esnetmeye göre görünür ve saklı tutar. Bayrak hücrenin seçilip seçilmediğine göre güncellenir ... !!

Herkese yardım ettiğiniz için teşekkürler ..!

1

düz tableview türüyle hücre genişlemesi için arıyorsanız,

iPhone UITableView with animated expanding cells

Ve durumda gruplandırılmış tableView kullanarak ve bölüm başlığının seçimine genişletmek istiyorum eğer

,

Table View Animations and Gestures

+0

Zaten animasyon bölümünü tamamlamıştım .. Hücrenin belirli kısımlarını nasıl gizleyeceğimi bilmem gerekiyor ... Neyse size linkleri göreceğim ... Zaten 1'i kontrol ettim – Gihan

0

Ooops, Kod yükleri postanızı kirletti.

Kodunuzu değiştirmiyorum.

Size mantığı açıklayacağım.

  1. Sadece bu gösterilmeli indexpath.row = 0; bölümündeki satırların
  2. sayısı seçtiyseniz, o zaman başka
    cell.productNameLable.text = @"Only this should be shown"; 
    cell.productListLabel.text = @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    cell.productTargetLable.text= @"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded"; 
    [email protected]"This Should be hidden.. Only shown when expanded";; 
    

    Bu kod kirli yapar 1.

+ 1 gösterilen hücrelerin sayımı olacak. Tüm verileri bir hücrede gösterirseniz ve bir bölüm seçtiğinizde yalnızca bir hücre eklenirse, bunların tümünü farklı hücrelerde eklemenizi öneririm. Bu uzun kodlama yapıyoruz niye

Hala karıştı, Please refer this answer for better explanation

+0

Hayır yanlış soru ... Bunu ham 0'a eklemem gerek yok ... Bu ayrıntılar masamın her hücresinde .. Bu detayları özel hücre bottum bölümünde göstermeliyim ... Ama bu bölüm Ben aslında hücreye tıkladığımda gösterilir .. Test amaçları için sadece bu dizeleri ekliyorum ... – Gihan