2012-01-18 25 views
6

Tôi muốn hiển thị hình nền khi UITableView của tôi trống. Hiện tại tôi đã thử thêm UIImageView vào bộ điều khiển xem của tôi có chứa một bảng, nhưng XCode không cho phép nó.iPhone UITableView nền hình ảnh khi bảng trống

Có cách nào tốt để làm điều đó không?

Trả lời

15

Bạn có thể thêm chế độ xem hình ảnh ở đầu chế độ xem bảng hoặc thay đổi chế độ xem nền của chế độ xem bảng.

// 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

Cảm ơn, mẹo hay. Nhân tiện, làm thế nào tôi có thể thiết kế trực quan một UIView và sử dụng nó như một lớp trên bàn? Tôi không còn có tùy chọn chỉ đơn giản là thiết kế chế độ xem với bảng phân cảnh XCode mới ... – bashan

+0

Bạn có thể thiết kế chế độ xem bằng cách tạo tệp nib mới và tải tệp đó vào UIView. – simonbs

+0

Tôi đã từng làm điều đó trên XCode cũ. XCode mới đi kèm với các bảng phân cảnh dường như hoạt động theo một cách khác. Nó không cho phép bạn chỉ tạo một khung nhìn kích thước tùy chỉnh mới và tất cả các khung nhìn đều nằm trên cùng một tệp bảng phân cảnh. – bashan

4

UITableView có thuộc tính backgroundView. Đặt thuộc tính này là UIImageView chứa hình nền của bạn.

+0

Xin lưu ý, rằng tôi không muốn hiển thị bất kỳ nền cho UITableView. Tôi muốn hiển thị một số nền chỉ khi bảng không có ô để hiển thị. Tôi chỉ đơn giản là muốn ẩn bảng và đặt một nền thay thế. Đề xuất của bạn có hoạt động cho điều đó không? – bashan

0

Trong bạn numberOfRowsInSection phương pháp:

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 phải lớn hơn 0

Các vấn đề liên quan