iPhone UITableView image background when table is empty

前端 未结 3 418
长情又很酷
长情又很酷 2021-02-04 18:17

I would like to show an image background when my UITableView is empty. Currently I tried adding a UIImageView to my view controller that contains a table, but XCode doesn\'t all

相关标签:
3条回答
  • 2021-02-04 18:49

    UITableView has a backgroundView property. Set this property to the UIImageView containing your background image.

    0 讨论(0)
  • 2021-02-04 18:50

    In you numberOfRowsInSection method:

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
        if data.count > 0 {
    
            return data.count
        }
        else{
    
            let image = UIImage(named: "Nature")
            let noDataImage = UIImageView(image: image)
            noDataImage.frame = CGRect(x: 0, y: 0, width: tableView.bounds.width, height: tableView.frame.height)
            tableView.backgroundView = noDataImage
            tableView.separatorStyle = .none
    
            return 0
        }
    }
    

    numberOfSections should be greater than 0

    0 讨论(0)
  • 2021-02-04 18:51

    You could either add an image view on top of the table view or change the background view of the table view.

    // Check if table view has any cells
    int sections = [self.tableView numberOfSections];
    BOOL hasRows = NO;
    for (int i = 0; i < sections; i++) {
        BOOL sectionHasRows = ([self.tableView numberOfRowsInSection:i] > 0) ? YES : NO;
        if (sectionHasRows) {
            hasRows = YES;
            break;
        }
    }
    
    if (sections == 0 || hasRows == NO)
    {
        UIImage *image = [UIImage imageNamed:@"test.png"];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    
        // Add image view on top of table view
        [self.tableView addSubview:imageView];
    
        // Set the background view of the table view
        self.tableView.backgroundView = imageView;
    }
    
    0 讨论(0)
提交回复
热议问题