programing

UITableView에서 빈 셀을 삭제하는 방법

lastmoon 2023. 4. 22. 10:00
반응형

UITableView에서 빈 셀을 삭제하는 방법

심플한 것을 보여주려고 합니다.UITableView데이터를 가지고 있습니다.의 정적 높이를 설정하고 싶다.UITableView테이블 끝에 빈 셀이 표시되지 않도록 합니다.그걸 어떻게 하는 거죠?

코드:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSLog(@"%d", [arr count]);
    return [arr count];
}

제로 높이 테이블 바닥글 보기를 설정합니다(아마도viewDidLoad메서드)는 다음과 같습니다.

신속:

tableView.tableFooterView = UIView()

목표-C:

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

테이블에는 표시할 바닥글이 있다고 생각되므로 명시적으로 요청한 셀 이외의 셀은 표시되지 않습니다.

인터페이스 빌더 프로팁:

xib/Storyboard를 사용하는 경우 UIView(높이 0pt)를 UITableView 하단에 드래그하기만 하면 됩니다.

Swift 3 구문:

tableView.tableFooterView = UIView(frame: .zero)

Swift 구문: < 2.0

tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

Swift 2.0 구문:

tableView.tableFooterView = UIView(frame: CGRect.zero)

스토리보드에서UITableView속성 Style을 변경합니다.Plain로.Grouped.

Xcode 6.1에 신속한 구현

self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true

코드 두 번째 줄은 프레젠테이션에 영향을 주지 않습니다.를 사용하여 가 숨겨져 있는지 여부를 확인할 수 있습니다.

이 링크에서 가져온 답변 UITableViewSwift에서 셀을 숨기지 못했습니다.

지금으로서는 코멘트를 추가할 수 없기 때문에, 이것을 답변으로 추가해 주세요.

@Andy의 답변은 훌륭합니다.또, 같은 결과를 얻을 수 있는 것은, 다음의 코드입니다.

tableView.tableFooterView = [UIView new];

'new' 메서드는 다음 항목에 속합니다.NSObject클래스 및 호출alloc그리고.init의 방법UIView.

코드를 시험해 봤습니다.

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

viewDidLoad 섹션과 xcode6에 경고가 표시되었습니다.저는 그 앞에 "셀프"를 붙였고, 이제 잘 작동합니다.작업 코드는 다음과 같습니다.

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

또는 tableView 메서드를 호출하여 바닥글 높이를 1포인트로 설정하면 마지막 줄이 추가되지만 바닥글 배경색을 설정하여 숨길 수도 있습니다.

코드:

func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
     return 1
}

마지막 줄처럼 보인다

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

/// OR 

    self.tableView.tableFooterView = UIView()
}

사용.UITableViewController

수용된 솔루션에 따라 다음 높이가 변경됩니다.TableViewCell이 문제를 해결하려면 , 다음의 순서에 따릅니다.

  1. 아래에 제시된 코드 스니펫 쓰기ViewDidLoad방법.

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

  2. 에 다음 메서드를 추가합니다.TableViewClass.m파일.

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        return (cell height set on storyboard); 
    }
    

바로 그겁니다.프로젝트를 빌드하고 실행할 수 있습니다.

다음 방법으로 합니다.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65)); 
    }
    else
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
    }
    return [array count];
}

여기서 65는 셀의 높이이고 66은 UIViewController의 내비게이션 바의 높이입니다.

언급URL : https://stackoverflow.com/questions/14520185/how-to-remove-empty-cells-in-uitableview

반응형