2012-01-18 10 views

Odpowiedz

15

Możesz dodać widok obrazu nad widokiem tabeli lub zmienić widok w tle widoku tabeli.

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

Dzięki, niezła sztuczka. Przy okazji, jak mogę wizualnie zaprojektować UIView i użyć go jako warstwy na stole? Nie mogę już po prostu zaprojektować widoku przy użyciu nowego storyboardu XCode ... – bashan

+0

Możesz zaprojektować widok, tworząc nowy plik stalówki i załadować go do UIView. – simonbs

+0

Zrobiłem to na starym XCode. Nowy kod X, który jest dostarczany ze scenorysami, działa w inny sposób. Nie pozwala on po prostu utworzyć nowego niestandardowego widoku rozmiaru, a wszystkie widoki znajdują się w tym samym pliku scenorysu. – bashan

4

UITableView ma właściwość backgroundView. Ustaw tę właściwość na UIImageView zawierającą obraz tła.

+0

Należy pamiętać, że nie chcę, aby pokazać żadnego tła dla UITableView. Chcę pokazać tło tylko wtedy, gdy w tabeli nie ma żadnych komórek do wyświetlenia. Po prostu chcę ukryć tabelę i zamiast tego umieścić tło. Czy Twoja sugestia zadziała w tym celu? – bashan

0

W Tobie numberOfRowsInSection metoda:

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 powinna być większa niż 0