2017-06-05 141 views
1

我在一個名爲「ExperienceScreen」的主ViewController中加載的xib文件中創建了一個視圖。將這個xib視圖添加到ExperienceScreen可以很好地工作。問題是我想在UITableViewCel中添加這個xib視圖。我使用下面的代碼來做到這一點:在一個UITableView單元中顯示一個xib視圖

let experiences = service.getExperiences() 


    // 3. Loop through the array of experiences 
    for element in experiences { 

     if let customView = Bundle.main.loadNibNamed("ExperienceDetail", owner: self, options: nil)?.first as? ExperienceDetail 
     { 
      customView.lblTitle.text = element.title 
      customView.lblCompany.text = element.company 
      let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as UITableViewCell 
      cell.addSubview(customView) 
      cell.bringSubview(toFront: customView) 
     } 
    } 

    tableView.reloadData() 

啓動時,將子視圖沒有在UITableViewCell中所示。 customView視圖用xib View正確填充。我用斷點檢查了這個。 enter image description here

有人知道我做錯了什麼嗎?

非常感謝您的幫助!

回答

2

如果你想顯示你的xib文件爲UITableViewCell,那麼下面的場景工作 1.確保你的xib類是UITableViewCell的子類。 2.註冊您的廈門國際銀行在viewDidLoad中()

+0

感謝您的回覆

//class of xib file class TableCell: UITableViewCell { static let identifier = "TableCell" static let nib = UINib(nibName: "TableCell", bundle: nil) } // In view controller func setupTableView() { tableView.dataSource = self tableView.delefate = self tableView.register(TableCell.nib, forCellReuseIdentifier: TableCell.identifier) } 

調用setupTableView()!不幸的是,它仍然沒有顯示。您是否在我的代碼中看到此問題: https://www.dropbox.com/s/zr2eknaeovks381/Experiences.swift?dl=0 https://www.dropbox.com/s/op6kg8a4eh2u0i0/ExperienceDetail.swift ?dl = 0 –

+0

In cellForRowAt change let cell = tableView.dequeueReusableCell(withIdentifier:「cell」)!作爲UITableViewCell 讓cell = tableView.dequeueReusableCell(withIdentifier:ExperienceDetail.identifier)as! ExperienceDetail 和根據您的需要填充表CellCell –

+0

非常感謝! –

0

不要試圖一次性設置您的細胞。

您應該實施UITableViewDataSource協議並使用方法tableView(_:cellForRowAt:)配置每個單元。在這種方法中,您可以調用register(_:forCellReuseIdentifier:)將XIB用於新創建的單元格。

有很多關於創建表視圖的教程,您可以在這裏找到關於執行此操作的分步說明。

相關問題