2017-08-01 101 views
-3

我有以下實現,我將footerview添加爲自定義單元格。但是,如果沒有內容,我不想顯示最後一個單元格,如果有我想要顯示它。在TableView中隱藏自定義單元格

在我目前的實現中,它總是顯示最後一個單元格。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [self.adminOrderElements count]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return adminOrderElements[section].products.count + 1; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row < adminOrderElements[indexPath.section].products.count) 
    { 
     static NSString *CellIdentifier = @"Cell"; 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
     if (!cell) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
     } 
     NSArray * tempArray = adminOrderElements[indexPath.section].products; 
     cell.textLabel.text = [[tempArray objectAtIndex:indexPath.row] objectForKey:@"productname"]; 
     return cell; 
    } 
    else 
    { 
     static NSString *CellIdentifier = @"FooterCell"; 
     FooterTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) 
      cell = [[FooterTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

     if(adminOrderElements[indexPath.section].expanded && [adminOrderElements[indexPath.section].notes length]>0) 
     { 
      cell.footerLabel.text = [NSString stringWithFormat:@"Notes: %@", adminOrderElements[indexPath.section].notes]; 
     } 
     else 
     { 
      cell.heightConstraints.constant = 1; 
      cell.footerLabel.text = @""; 
     } 
     return cell; 
    } 
} 

回答

1

有一個選項,你可以做cellHeight 0

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(CHECK_IF_NO_CONTAIN) 
    return 0; 

return 40;// Normal height as you want 

} 
+0

你如何檢查自定義單元格? – hotspring

+0

你只需要實現這個方法。 – Nirmalsinh

+0

如果您沒有獲取特定數組索引的內容,還需要放置條件,然後可以將高度設置爲0。 – Nirmalsinh

0

及其與UITableView代表很簡單

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    if (dataObjects.count == 0){ 
     return 0; 
    } 
    return dataObjects.count; 
} 
1

我認爲你可以在樣,如果else子句添加條件某些條件滿足,那麼你想顯示這個單元其他明智的不...

if (indexPath.row < adminOrderElements[indexPath.section].products.count) 
    { 
     static NSString *CellIdentifier = @"Cell"; 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
     if (!cell) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
     } 
     NSArray * tempArray = adminOrderElements[indexPath.section].products; 
     cell.textLabel.text = [[tempArray objectAtIndex:indexPath.row] objectForKey:@"productname"]; 
     return cell; 
    } 
    else //Here add your condition here if you have content for the section like I think this condition might work [adminOrderElements[indexPath.section].notes length]>0 
    { 
     static NSString *CellIdentifier = @"FooterCell"; 
     FooterTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) 
      cell = [[FooterTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

     if(adminOrderElements[indexPath.section].expanded && [adminOrderElements[indexPath.section].notes length]>0) 
     { 
      cell.footerLabel.text = [NSString stringWithFormat:@"Notes: %@", adminOrderElements[indexPath.section].notes]; 
     } 
     else 
     { 
      cell.heightConstraints.constant = 1; 
      cell.footerLabel.text = @""; 
     } 
     return cell; 
    } 
} 
相關問題