类似于 Apple 在他们的音乐应用程序中的做法:
我想要一个UITableViewController
,但是如果有内容,我最好只显示单元格,否则显示“无内容”消息。只需UIView
在表格视图顶部放置一个?
类似于 Apple 在他们的音乐应用程序中的做法:
我想要一个UITableViewController
,但是如果有内容,我最好只显示单元格,否则显示“无内容”消息。只需UIView
在表格视图顶部放置一个?
根据需要设计一个无内容视图(UIView),将该视图添加到 self.view 并将其放置在表格视图的顶部。最初将其隐藏。然后在- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
方法里面,你可以做这样的事情。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
int count = songsArray.count;
if(count==0){
self.noContentView.hidden = NO;
}else{
self.noContentView.hidden = YES;
}
return count;
}
您可以计算 tableView:numberOfRowsInSection:,并添加一个子视图(这是您的空视图,例如: imageView 或 UILabel )取决于您的count
.
例如,在您的 viewDidLoad 中创建一个自定义的“空”标签
- (void)viewDidLoad
{
[super viewDidLoad];
_emptyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
_emptyView.backgroundColor = [UIColor clearColor];
// add en empty notes image placholder
// when there is no data to display
_emptyNoteImageView = [[UIImageView alloc] initWithFrame:CGRectMake(((self.view.bounds.size.width) / 3), 50, 119, 120)];
_emptyNoteImageView.image = [UIImage imageNamed:@"some_empty_images"];
_emptyLabel = [[UILabel alloc] initWithFrame:CGRectMake(((self.view.bounds.size.width) / 5), self.view.bounds.size.width - 150, 200, 20)];
_emptyLabel.text = @"No note to display";
_emptyLabel.font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:12.0f];
_emptyLabel.textAlignment = NSTextAlignmentCenter;
_emptyLabel.textColor = [UIColor lightGrayColor];
_emptyLabel.shadowColor = [UIColor whiteColor];
_emptyLabel.backgroundColor = [UIColor clearColor];
[_emptyView addSubview:_emptyLabel];
}
然后,根据您的 numberOfRowsInSection 计数,您可以在 self.view 中添加/删除它。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
count = [self.dataSource count];
if (count > 0) {
[_emptyView removeFromSuperview];
} else {
[self.view addSubview:_emptyView];
}
return count;
}
或者简单地说,你可以使用这个类别...... https://github.com/nxtbgthng/UITableView-NXEmptyView
——希望对你有帮助!
假设您使用 NSMUtableArray(“数组”)填充 UITableView。
-(void)viewDidLoad
{
[super viewDidLoad];
UIView *noDataView = [[UIView alloc] initWithFrame:self.tableView.frame];
UILabel *noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(50,50,100,50)];
[noDataLabel setText:@"No Data Found"];
[noDataView addSubview:noDataLabel];
[noDataView setHidden:TRUE];
array=[self fetchDataIntoArray];
if([array count]==0)
{
noDataView.hidden=FALSE;
[self.view bringSubviewToFront:noDataView];
self.tableView.hidden = TRUE;
}
else
{
self.tableView.hidden=FALSE;
[self.view bringSubviewToFront:self.tableView];
noDataView.hidden = TRUE;
}
}