2012-08-29 32 views
6

Tôi đang thực hiện một ứng dụng cần mở rộng các ô trên màn hình để hiển thị thêm chi tiết. Tôi đã sử dụng một ô tùy chỉnh và thêm chúng vào một UItableview. Khi tôi bấm vào ô nó hoạt hình tốt và đi xuống và khi tôi bấm một lần nữa nó đi lên, điều này được thực hiện bằng cách thay đổi chiều cao của ô. Kích thước ô tùy chỉnh thực tế lớn hơn ô mà tôi thường hiển thị. Khi tôi bấm vào ô toàn bộ ô được hiển thị. Chỉ có vấn đề tôi gặp phải là tràn dữ liệu. những dữ liệu này nên được ẩn khi ô không được chọn. Chỉ khi nào dữ liệu được chọn sẽ được hiển thị.Celltable Cell Overflow ios

Tôi đã đề cập đến các bản in khác nhau, đã cố gắng thay đổi cài đặt màu bị ràng buộc không hoạt động đối với tôi. Tôi có cùng một loại vấn đề được hỏi trong câu hỏi này iphone uitablecellview overflow, đã thử câu trả lời nhưng nó không hoạt động.

Tất cả những gì tôi cần là cách ẩn phần dưới cùng của ô tùy chỉnh khi nó không được mở rộng và hiển thị khi nó được mở rộng ...!

Đây là ảnh chụp màn hình của tôi

When it is loaded Khi nó được nạp When I click on a cell Khi tôi bấm vào một tế bào] When I click on the 2nd cell Khi tôi bấm vào các tế bào 2nd When I click on the cell which is expanded
Khi tôi bấm vào các tế bào mà đã được mở rộng Đây là các đoạn mã mà tôi đã sử dụng ....

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

Trả lời

1

Ok tôi đã nhận nó thực hiện bằng cách sử dụng một lá cờ duy nhất và một tham chiếu đến tế bào cellForRowAtIndexPath trong didSelectRowAtIndexPath. Và thiết lập các lables của tôi có thể nhìn thấy và ẩn theo sự sụp đổ và căng ra. Cờ được cập nhật tương ứng với việc liệu ô có được chọn hay không ... !!

Cảm ơn bạn đã giúp mọi người ..!

1

Nếu bạn đang tìm kiếm mở rộng di động với đồng bằng loại tableview,

iPhone UITableView with animated expanding cells

Và nếu trong trường hợp bạn đang sử dụng tableview nhóm lại và muốn mở rộng về lựa chọn của phần header,

Table View Animations and Gestures

+0

Tôi đã hoàn thành phần hoạt hình .. Tôi chỉ cần biết cách ẩn phần nào đó của ô ... Dù sao tôi sẽ giới thiệu cho bạn liên kết ... Tôi đã kiểm tra số 1 – Gihan

0

Rất tiếc, tải mã khiến bài đăng của bạn bị bẩn.

Tôi sẽ không thông qua mã của bạn.

Tôi sẽ giải thích cho bạn logic.

  1. Chỉ hiển thị thông tin này sẽ được hiển thị trong đường dẫn index.row = 0;
  2. Số lượng hàng trong phần sẽ được nếu được chọn, sau đó đếm các tế bào thể hiện + 1 khác 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";; 

Điều này làm cho mã của bạn bẩn. Nếu bạn muốn hiển thị tất cả dữ liệu trong một ô và chỉ một ô được thêm khi bạn chọn một phần, tôi sẽ đề xuất thêm tất cả các ô này vào các ô khác nhau.

tôi vẫn còn lúng túng do tại sao bạn đang làm những mã hóa dài, Please refer this answer for better explanation

+0

Không có câu hỏi sai ... Tôi không cần phải thêm này vào nguyên 0 ... Những chi tiết này là trong mỗi tế bào của bảng của tôi .. Tôi cần phải hiển thị các chi tiết trong phần đóng chai tế bào tùy chỉnh ... Nhưng phần này nên được được hiển thị khi tôi thực sự nhấp vào ô ... Chỉ với mục đích thử nghiệm, tôi đang thêm các chuỗi này ... – Gihan

Các vấn đề liên quan