2015-11-15 28 views
0

這是我的手機自定義類:應用墜毀,機上電池初始化

class showSugTableViewCell: UITableViewCell { 


override init(style: UITableViewCellStyle, reuseIdentifier: String!) { 
    super.init(style: .Default, reuseIdentifier: "showSug") 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

override func awakeFromNib() { 
    super.awakeFromNib() 


    let categoryLbl = UILabel() 
    categoryLbl.frame = CGRectMake(20, 10, 100, 20) 
    categoryLbl.text = "Text" 
    contentView.addSubview(categoryLbl) 



} 

override func setSelected(selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 


} 

} 

下面是從cellForRowAtIndexPath代碼:

let cell = tableView.dequeueReusableCellWithIdentifier("showSug") as! showSugTableViewCell 


     return cell 

的問題是,在電池初始化我的應用程序崩潰,和日誌說:

fatal error: unexpectedly found nil while unwrapping an Optional value

我該如何解決這個問題?

編輯:

我改變了我的代碼如下:

let cellTemp = self.sugTableView.dequeueReusableCellWithIdentifier("showSug") 
     var cell = cellTemp as? showSugTableViewCell! 

     if cell == nil { 
      self.sugTableView.registerNib(UINib(nibName: "showSugTableViewCell", bundle: nil), forCellReuseIdentifier: "showSug") 
      self.sugTableView.registerClass(showSugTableViewCell.classForCoder(), forCellReuseIdentifier: "showSug") 

      cell = showSugTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "showSug") 
     } 


     return cell! 

然而,應用程序現在墜毀在return語句。

+0

首先告訴我們在哪一行發生錯誤! – luk2302

+0

我說它在單元初始化時崩潰了,它是'let cell = tableView.dequeueReusableCellWithIdentifier(「showSug」)as! showSugTableViewCell' – dpstart

+0

好吧,確切地說:那不是初始化。您是否在IB中設置了自定義單元格,以便擁有關聯的'showSug'標識符?你把那個單元的類設置爲'showSugTableViewCell'。注意:類應該以大寫字母開頭:'ShowSugTableViewCell' – luk2302

回答

0

嘗試下面的情況,以確認問題 - 我堅信以下2個問題可能是你的問題

if let retCell = tableView.dequeueReusableCellWithIdentifier("showSug") { 
    if let cell = retCell as? showSugTableViewCell { 
     //use the cell object 
    }else { 
     //1. cell may not be of type showSugTableViewCell so filing t convert 
//If it is the case check in identifier you set in nib 
    } 
}else { 
    //2. tableView.dequeueReusableCellWithIdentifier may not be returning for "showSug" 
//Check class type it return table cell 
} 
+0

如何處理點1和2? – dpstart

+0

我有更新我的答案 - 檢查你的筆尖,並確保你已經按照預期進行了配置。 –

+0

您能否告訴您接收哪個錯誤(第1點或第2點)? –