IT박스

UITableView에서 빈 행을 숨기고 비어 있지 않은 행을 기반으로 Uitableview의 높이를 변경하는 방법

itboxs 2020. 11. 29. 10:09
반응형

UITableView에서 빈 행을 숨기고 비어 있지 않은 행을 기반으로 Uitableview의 높이를 변경하는 방법


UITableView.

  1. UITableview내 페이지에를 추가하면 기본적으로 섹션의 행 수를로 설정했지만 고정 된 수의 행이 표시됩니다 1. 모든 행은 첫 번째 행을 제외하고 표시, 그리고 모든 빈 행입니다. 따라서 UItableview.

  2. 비어 있지 않은 행을 기반으로 UItableView.


UITableViewStyleGrouped스타일을 사용하고 있습니까?

기본적으로 UITableViewStylePlain채워진 셀을 표시 한 후에도 빈 셀을 표시 하도록 설정되어 있기 때문입니다 .


새로운 답변

Swift 2.2, 3.0 이상에서는 다음을 수행하십시오.

tableView.tableFooterView = UIView()

아래에 오래된 답변이 있습니다. 포스터를 유지하십시오.

을 사용해야 UITableViewStylePlain하고 다른 용도로 footerView를 사용하지 않는 경우 ARC를 사용하도록 설정 한 경우 다음과 같은 반 더러운 솔루션을 사용할 수 있습니다. :

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];

    return view;
}

ARC가 비활성화 된 경우 다음을 사용하십시오.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[[UIView alloc] init] autorelease];

    return view;
}

이렇게하면 마지막 데이터로 채워진 셀 바로 뒤에 나타나는 보이지 않는 footerView가 생성됩니다.


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
 { 
     return 0.01f;
 }

및 iOS 7 용

 self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

표 배경과 동일한 배경색으로 바닥 글보기로 간단한 UIView를 만들어 문제를 해결했습니다.

(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
    view.backgroundColor = [UIColor whiteColor];
    return view;
}

테이블보기에서 스크롤링을 비활성화해야 할 수도 있습니다.


tableview에 여러 섹션이있는 경우 다음을 사용해 볼 수 있습니다.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if (section == tableView.numberOfSections - 1) {
        return [UIView new];
    }
    return nil;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    if (section == tableView.numberOfSections - 1) {
        return 1;
    }
    return 0;
}

- (void) viewDidLoad
{
  [super viewDidLoad];
  self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
}

인터페이스 빌더를 통해서도 가능합니다. UITableView에 바닥 글로 1 픽셀 높이의 UIView를 추가하기 만하면됩니다. 본질적으로 여기에있는 대부분의 답변과 동일하지만 뷰 컨트롤러 대신 뷰에서 일부 UI 세부 사항을 유지합니다.

여기에 이미지 설명 입력


[self.SomeTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

UITableView이 비어있는 경우이를 사용하여 줄을 제거하십시오 .


행 수를 반환하는 메서드에서 countyourself를 동적으로 지정하십시오 . 예를 들어 NSArray이름이 지정된 테이블을 채울 경우arrayForRows:

return [arrayForRows count]; // inside the method which returns the number of rows.

위는 데이터 소스로 배열이있는 테이블을 채우는 간단한 예입니다. 빈 행이 없습니다. 테이블을 count채우는 배열의 항목 수에 따라 그 수만큼의 행만 테이블에 표시됩니다 .

나는 당신이 테이블의 행 높이를 의미한다고 생각합니다. 다음 방법을 사용하여 행의 높이로 놀 수 있습니다.

(CGFloat)tableView:(UITableView  *)tableView heightForRowAtIndexPath:(NSIndexPath  *)indexPath

read http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UITableViewDelegate/tableView:heightForRowAtIndexPath:

EDIT: ah now I get what you are trying to achieve. You are trying to avoid showing the empty rows separated with those separator lines right? See this post:

how to display a table with zero rows in UITableView


A bit hidden in Bourne's answer; if you want to hide to bottom empty rows in a plain tableview with multiple sections, use this answer:

https://stackoverflow.com/a/5658100/580173


For Swift:

override func viewWillAppear(animated: Bool) {
    self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

// OR 

    self.tableView.tableFooterView = UIView()
}

For C#: (Please don't forget to add using CoreGraphics; )

public override void ViewWillAppear(bool animated)
{
    base.ViewWillAppear(animated);
    this.sampleTableview.TableFooterView = new UIView(frame: CGRect.Empty);
}

참고URL : https://stackoverflow.com/questions/4213197/how-to-hide-empty-rows-in-a-uitableview-and-change-the-height-of-the-uitableview

반응형