在我的UICollectionViewController
和UITableViewController
上找不到行/单元格时,想知道如何正确显示通知或文字。这时我只会显示UIAlertView
,有没有更好的方法来解决这个问题?
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Warning!"
message:@"No rows found"
delegate:self
cancelButtonTitle:@"Logout"];
[alert show];
答案 0 :(得分:13)
UICollectionView(和UITableView)有一个名为backgroundView的属性。 您可以使用标签创建视图,只需使用其隐藏属性即可。
我实际上使用这种技术来显示“无行”标签和“加载”标签。
答案 1 :(得分:7)
我个人使用UICollectionView
页脚来显示此类消息。我在故事板(在故事板的属性检查器中选择Section Footer
)中添加了一个页脚,其中带有带有消息的标签,然后在UICollectionViewController
中:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
UICollectionReusableView *reusableview = nil;
if (kind == UICollectionElementKindSectionFooter) {
reusableview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"FooterView" forIndexPath:indexPath];
if(images.count>0){
reusableview.hidden = YES;
reusableview.frame = CGRectMake(0, 0, 0, 0);
}else{
reusableview.hidden = NO;
reusableview.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}
}
return reusableview;
}
答案 2 :(得分:3)
如@ tal952所述,如果整个collectionView / tableView为空,则可以使用backgroundView
或UICollectionView
的{{1}}属性。
这是我使用的,同样可以应用于tableView:
UITableView
如果您有页脚或标题,请相应地设置其func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if myArray.isEmpty && collectionView.backgroundView == nil {
let noItemLabel = UILabel() //no need to set frame.
noItemLabel.textAlignment = .center
noItemLabel.textColor = .lightGray
noItemLabel.text = "No item present"
collectionView.backgroundView = noItemLabel
}
collectionView.backgroundView?.isHidden = !myArray.isEmpty
return myArray.count
}
属性:
isHidden
答案 3 :(得分:1)
使用此推文信息,如提醒。它的吸引力 Tweet like info Panel
答案 4 :(得分:0)
创建一个UIView,其标签上写着“找不到行”(_noRowsView)。然后在行数为0时将其用作tableHeaderView。
-(void)dataLoadingDidFinish {
if(_data.count == 0) {
self.tableView.tableHeaderView = _noRowsView;
} else {
self.tableView.tableHeaderView = nil;
}
}
答案 5 :(得分:0)
最佳答案在How to change the UICollectionView footerview's height programatically
更改viewForSupplementaryElementOfKind中的reusableview.frame永远不会正常工作。将kahlo的回复标记为正确答案是误导性的。