5

想知道当我的UICollectionViewControllerUITableViewController. 此时我只会显示一个UIAlertView,有没有更好的方法来解决这个问题?

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

[alert show];
4

6 回答 6

13

UICollectionView(和 UITableView)有一个名为 backgroundView 的属性。您可以创建一个带有标签的视图,然后使用它的 hidden 属性。

我实际上使用这种技术来显示“无行”标签和“加载”标签。

于 2015-03-06T13:11:41.430 回答
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;
}
于 2013-10-29T20:36:56.237 回答
3

正如@tal952 所提到的,如果整个collectionView/tableView 为空,您可以使用或使用backgroundView属性。UICollectionViewUITableView

这是我使用的,同样可以应用于 tableView :

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相应地设置它们的属性:

footer.isHidden = self.myArray.isEmpty

空的collectionView/tableView

于 2017-08-15T17:50:00.487 回答
1

使用此推文框信息,如警报。其吸引人的 推文喜欢信息面板

于 2013-10-01T13:37:22.077 回答
0

创建一个 UIView,其标签上写着“未找到行”(_noRowsView)。然后在行数为 0 时将其用作 tableHeaderView。

-(void)dataLoadingDidFinish {
   if(_data.count == 0) {
       self.tableView.tableHeaderView = _noRowsView;
   } else {
      self.tableView.tableHeaderView = nil;
   }

}
于 2013-10-01T14:50:16.167 回答
0

最好的答案是如何以编程方式更改 UICollectionView 页脚视图的高度

更改 viewForSupplementaryElementOfKind 中的 reusableview.frame 永远不会起作用。将 kahlo 的回复标记为正确答案是一种误导。

于 2015-01-10T14:32:49.067 回答