2017-06-11 21 views
0

私は失われています。私は検索して検索して、自分のカスタムセルが表示されない理由を見つけることができません。.xibから作成されたカスタムUITableViewCellは表示されません

// ProfileCell.swift: 

import UIKit 
import QuartzCore 

class ProfileCell: UITableViewCell { 

    @IBOutlet weak var profileNameLabel: UILabel! 
    @IBOutlet weak var profilePictureView: UIImageView! 
} 

第2のデフォルトのTableViewCellが正常に表示されます。私はInterface Builderに欠けている制約やエラーはありません。 ProfileCellは、カスタムクラスとしてProfileCell.xib IDタブで選択されています。

// MoreTableViewControllerIB.swift 

import UIKit 

class MoreTableViewControllerIB: UITableViewController { 

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

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
    return 2 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     // this cell is missing 
     if indexPath.row == 0 { 

      tableView.register(UINib(nibName: "ProfileCell", bundle: nil), forCellReuseIdentifier: "ProfileCell") 
      let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileCell", for: indexPath) as! ProfileCell    
      cell.profileCommentLabel.text = "Test Comment Label" 
      cell.profilePictureView.image = UIImage(named:"profile_picture_test")    
      return cell 

     // this cell is displayed perfectly 
     }else if indexPath.row == 1 { 

      let cell = tableView.dequeueReusableCell(withIdentifier: "statisticsCell") ?? UITableViewCell(style: .default, reuseIdentifier: "statisticsCell") 
      cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator 
      cell.textLabel?.text = "Statistics" 
      cell.imageView.image = UIImage(named:"statistics") 
      return cell 

     // has to return a cell in every scenario 
     }else{ 
      let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell 
      return cell 
     } 
    } 
} 

Here is a screenshot of what I get.

答えて

3
tableView.register(UINib(nibName: "ProfileCell", bundle: nil), forCellReuseIdentifier: "ProfileCell") 

だから私は私のミスが何であったかが分かったのviewDidLoadまたはviewWillApppear

+0

あなたの答えはありがとうございますが、これは間違いではありませんでした。 'cellForRowAt indexPath'に.xibを登録することも同様です。何が間違っていたのか自分の答えを見てください。 –

0

にこの行を追加します。かなり愚かで、半分の日にかかりました。

セルはすでに表示されていましたが、デフォルトの高さでは表示されませんでした。私は.xibの設定された高さが使用されると思った。明らかにそうではありません。 これを追加しました:

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if indexPath.row == 0 { 
     return 192 // the height for custom cell 0 
    } 
} 
関連する問題