UITableView에서 빈 행을 숨기고 비어 있지 않은 행을 기반으로 Uitableview의 높이를 변경하는 방법
내 UITableView
.
UITableview
내 페이지에를 추가하면 기본적으로 섹션의 행 수를로 설정했지만 고정 된 수의 행이 표시됩니다1
. 모든 행은 첫 번째 행을 제외하고 표시, 그리고 모든 빈 행입니다. 따라서UItableview
.비어 있지 않은 행을 기반으로
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
이 비어있는 경우이를 사용하여 줄을 제거하십시오 .
행 수를 반환하는 메서드에서 count
yourself를 동적으로 지정하십시오 . 예를 들어 NSArray
이름이 지정된 테이블을 채울 경우arrayForRows:
return [arrayForRows count]; // inside the method which returns the number of rows.
위는 데이터 소스로 배열이있는 테이블을 채우는 간단한 예입니다. 빈 행이 없습니다. 테이블을 count
채우는 배열의 항목 수에 따라 그 수만큼의 행만 테이블에 표시됩니다 .
나는 당신이 테이블의 행 높이를 의미한다고 생각합니다. 다음 방법을 사용하여 행의 높이로 놀 수 있습니다.
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
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);
}
'IT박스' 카테고리의 다른 글
반복보다 재귀를 선호해야하는 이유는 무엇입니까? (0) | 2020.11.30 |
---|---|
좋아하는 Kohana 팁 및 기능? (0) | 2020.11.30 |
PHP 치명적인 오류 : 빈 속성에 액세스 할 수 없습니다. (0) | 2020.11.29 |
현재 다른 Gradle 인스턴스에서 사용 중입니다. (0) | 2020.11.29 |
작업 표시 줄 뒤로 버튼이 작동하지 않음 (0) | 2020.11.29 |