当没有UICollectionView和UITableView的行/单元格时,“找不到行”

时间:2013-10-01 13:34:23

标签: ios objective-c uitableview uicollectionview

在我的UICollectionViewControllerUITableViewController上找不到行/单元格时,想知道如何正确显示通知或文字。这时我只会显示UIAlertView,有没有更好的方法来解决这个问题?

UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Warning!" 
message:@"No rows found" 
delegate:self
cancelButtonTitle:@"Logout"];

[alert show];

6 个答案:

答案 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为空,则可以使用backgroundViewUICollectionView的{​​{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

empty collectionView/tableView

答案 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的回复标记为正确答案是误导性的。