2012-08-29 14 views
6

Robię aplikację, która wymaga rozszerzenia komórek onclick, aby pokazać więcej szczegółów. Użyłem niestandardowej komórki i dodałem ją do UItableview. Kiedy klikam na komórkę, animuje się dobrze i zejdzie w dół, a kiedy klikam ponownie, to idzie w górę, odbywa się to za pomocą zmiany wysokości komórki. Rzeczywisty rozmiar komórki niestandardowej jest większy niż zwykle pokazywana komórka. Po kliknięciu na komórkę wyświetlana jest cała komórka. Jedyny problem, jaki mam, to przepełnienie danych. te dane powinny być ukryte, gdy komórka nie jest wybrana. Tylko wtedy, gdy zostanie wybrane, powinny zostać wyświetlone te dane.UItable Cell Overflow ios

Odniosłem się do różnych artyzmów, próbowałem zmienić ustawienie koloru, które nie działało dla mnie. Mam ten sam rodzaj problemu, który został zadany w tym pytaniu iphone uitablecellview overflow, wypróbowałem odpowiedź, ale nie zadziałało.

Wszystko, czego potrzebuję, to ukryć dolną część niestandardowej komórki, gdy nie jest ona rozszerzona, i pokazać ją, gdy jest przedłużona ...!

To są moje zrzuty ekranu

When it is loaded Gdy jest ładowany When I click on a cell Kiedy klikam na komórkę] When I click on the 2nd cell Kiedy klikam na 2 komórki When I click on the cell which is expanded
Po kliknięciu na komórki, który jest już rozszerzony Są to snipsy kodu, których użyłem ...

// 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; 
} 

Odpowiedz

1

Ok mam to zrobić za pomocą pojedynczej flagi i odniesienie do komórki cellForRowAtIndexPath w didSelectRowAtIndexPath. I ustawienie moich labiryntów widocznych i ukrytych zgodnie z upadkiem i rozciąganiem. Flaga jest aktualizowana odpowiednio do tego, czy komórka jest wybrana czy nie ... !!

Dzięki za was pomóc wszystkim ..!

1

Jeśli szukasz ekspansji komórek ze zwykłego typu Tableview,

iPhone UITableView with animated expanding cells

A jeśli w przypadku korzystania zgrupowanych tableview i chcą poszerzyć o wyborze sekcji nagłówka,

Table View Animations and Gestures

+0

Mam już zakończoną część animacji .. Muszę tylko wiedzieć, jak ukryć pewną część komórki ... W każdym razie będę odnosić się do ciebie linki ... Sprawdziłem już pierwszy – Gihan

0

Ooops, mnóstwo kodu spowodowało, że twój post był brudny.

Nie przejdę przez twój kod.

Wyjaśnię ci logikę.

  1. Tylko to, co powinno zostać wyświetlone, przejdzie w indeksie index.row = 0;
  2. Liczba wierszy w sekcji będzie, jeśli wybrany, a następnie policzyć komórek pokazano + 1 indziej 1.
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";; 

To sprawia, że ​​Twój kod brudne. Jeśli chcesz pokazać wszystkie dane w jednej komórce, a tylko jedna komórka zostanie dodana po wybraniu jednej sekcji, zasugeruję dodanie wszystkich w różnych komórkach.

nadal jestem zdezorientowany dlaczego robisz te długie kodowanie, Please refer this answer for better explanation

+0

Nie masz pytanie jest niewłaściwe ... Nie muszę dodawać tego do surowego 0 ... Te szczegóły są w każdej komórce mojego stołu .. Muszę pokazać te szczegóły w części niestandardowej komórki ... Ale ta część powinna być wyświetlane po kliknięciu komórki. Tylko do celów testowych dodaję te ciągi ... – Gihan

Powiązane problemy