2017-01-17 1 views
0

사용자 지정 테이블보기를 만들려고합니다.사용자 지정 셀 내용이 표시되지 않습니다.

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

내가 빈 세포를 얻을 나는있는 UITableViewController 있습니다. 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 클래스와 연결합니다. ID는 "셀"입니다. –

+1

"self.tableView.register"줄을 제거하면 작동합니다. – davedavedave

관련 문제