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
이 문제를 해결하려면 , 다음의 순서에 따릅니다.
아래에 제시된 코드 스니펫 쓰기
ViewDidLoad
방법.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
에 다음 메서드를 추가합니다.
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
'programing' 카테고리의 다른 글
VBA: 사용자가 셀을 삭제하면 Range 객체는 어떻게 됩니까? (0) | 2023.04.22 |
---|---|
MVVM이 EventArgs를 명령 매개 변수로 전달 (0) | 2023.04.22 |
Git serve : 그렇게 심플하게 하고 싶다 (0) | 2023.04.22 |
뮤텍스와 크리티컬 섹션의 차이점은 무엇입니까? (0) | 2023.04.22 |
동일한 키를 가진 이 유형의 다른 인스턴스가 이미 추적 중이므로 엔티티 유형의 인스턴스를 추적할 수 없습니다. (0) | 2023.04.22 |