2017-01-17 13 views
0

Я хочу создать пользовательский вид таблицы. У меня есть UITableViewController:Пользовательский контент ячейки не отображается Swift

class MainListView: UITableViewController{ 
var invoceList: [InvoceObject] = [] 
@IBOutlet var tbMain: UITableView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    self.tableView.register(CustomCell.self, forCellReuseIdentifier: "cell") 
    tbMain.delegate = self 
    self.tbMain.dataSource = self 
    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning()   
    } 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return self.invoceList.count 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell   
    cell.lblBuyerName?.text = self.invoceList[indexPath.row].BUYER_NAME 
    cell.lblDate?.text = self.invoceList[indexPath.row].CREATED_AT 
    cell.lblPriceGross?.text = self.invoceList[indexPath.row].PRICE + " " + self.invoceList[indexPath.row].CURRENCY 

    cell.backgroundColor = UIColor(white: 1, alpha: 0.5)  
    return cell 
    } 
} 

И мой класс UITableViewCell:

class CustomCell: UITableViewCell { 
@IBOutlet weak var lblBuyerName: UILabel! 
@IBOutlet weak var lblDate: UILabel! 
@IBOutlet weak var lblPriceGross: UILabel! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 
override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 
    // Configure the view for the selected state 
} 
} 

После сборки я получаю пустые ячейки. У меня есть ряд строк, таких как invoceList.count, но нет меток, и он выглядит пустой таблицей. Что я делаю неправильно?

+0

Как вы инициализируете массив 'invoceList'? –

+0

@NiravD Это неважно, потому что если я использую 'cell.textLabel? .text' (без пользовательской ячейки), все в порядке. –

ответ

1

Поскольку вы используете UITableViewController, существует неявное свойство tableView с подключенным источником данных и делегатом. Вы должны использовать это, чтобы избежать путаницы.

И удалите строку self.tableView.register..., если вы используете ячейки прототипа.

0

Если содержимое ячейки определено в отдельном файле xib, вам необходимо зарегистрировать это, а не класс - если вы регистрируете только класс, фактические метки не создаются, потому что сам класс не создает их.

//Replacing CustomCellNibName with the name of your xib file 
tableView.register(UINib.init(nibName: "CustomCellNibName", bundle: nil), forCellReuseIdentifier: "Cell") 

Если ячейка создаются в раскадровке как клетки прототипа, вам не нужно, чтобы зарегистрировать его, а просто связать класс с ячейкой в ​​файле раскадровка (на вкладке личности инспектора, пользовательский класс) и заполните имя, которое вы хотите использовать (в данном случае, «Ячейка») в поле «Индекс» инспектора атрибутов.

+0

Ячейка создана в раскадровке как прототип ячейки и связана с моим классом CustomCell.swift. Идентификатор - это «ячейка». –

+1

Затем он должен работать, если вы удалите строку «self.tableView.register» – davedavedave