2016-06-09 2 views
0

Мое приложение - это простой RSS-ридер, который использует табличное представление для отображения списка статей. Чтобы отобразить изображение из каждой статьи в ячейке tableview, а также название и автор статей, я использовал пользовательский номерUITableViewCell. Я создал класс для ячейки tableview и создал выходы для изображения и ярлыков из ячейки прототипа в раскадровке для класса. Код для моего пользовательского Tableview ячейки следующим образом:Пользовательская ячейка UITableView вызывает ошибку

import UIKit 

class itemTableViewCell: UITableViewCell { 
@IBOutlet weak var itemTitleLabel: UILabel! 


@IBOutlet weak var itemImageView: UIImageView! 
@IBOutlet weak var itemAuthorLabel: 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, я следующий код для cellForRowAtIndexPath метода:

override func tableView(tableView: UITableView, cellForRowAtIndexPath 
indexPath: NSIndexPath) -> UITableViewCell { 


    let cell = tableView.dequeueReusableCellWithIdentifier("cell", 
forIndexPath: indexPath) as! itemTableViewCell 

    cell.itemImageView.image = UIImage(named: "placeholder") 
    cell.backgroundColor = UIColor.clearColor() 

    let item = feedItems[indexPath.row] as MWFeedItem 
    cell.itemAuthorLabel.text = item.author 
    cell.itemTitleLabel.text = item.title 




    if item.content != nil { 

     let htmlContent = item.content as NSString 
     var imageSource = "" 

     let rangeOfString = NSMakeRange(0, htmlContent.length) 
     let regex = try? NSRegularExpression(pattern: "(<img.*?src=\")(.*?)(\".*?>)", options: []) 

     if htmlContent.length > 0 { 
      let match = regex?.firstMatchInString(htmlContent as String, options: [], range: rangeOfString) 

      if match != nil { 
       let imageURL = htmlContent.substringWithRange(match!.rangeAtIndex(2)) as NSString 
       print(imageURL) 

       if NSString(string: imageURL.lowercaseString).rangeOfString("feedburner").location == NSNotFound { 
        imageSource = imageURL as String 

       } 

      } 
     } 

     if imageSource != "" { 
      cell.itemImageView.setImageWithURL(NSURL(string:      
imageSource)!, placeholderImage: UIImage(named: "placeholder")) 
     } 
     else{ 
      cell.itemImageView.image = UIImage(named: "placeholder") 
     } 

    } 
    return cell 
} 

Я также добавил

var nibName=UINib(nibName: "itemTableViewCell", bundle:nil) 
    tableView.registerNib(nibName, forCellReuseIdentifier: "cell") 
    tableView.registerClass(itemTableViewCell.self,  
    forCellReuseIdentifier: "cell") 

в мой взглядDidLoad() метод.

Всякий раз, когда я запустить приложение, я получаю классический "unexpectedly found nil while unwrapping an Optional value" ошибку в

в моем cellForRowAtIndexPath методе.

Большое вам спасибо за помощь!

ответ

1

Удалить линию

tableView.registerClass(itemTableViewCell.self, forCellReuseIdentifier: "cell") 

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


На основании комментариев ниже обе строки кода должны быть удалены, поскольку они заменяют любую регистрацию, которую должна выполнить раскадровка. В ячейке раскадровки должен быть добавлен идентификатор cell, чтобы он был зарегистрирован во время создания экземпляра раскадровки и затем может использоваться для удаления из очереди.

+0

Я сделал это и получил сообщение об ошибке: Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Не удалось загрузить NIB в пакете:« NSBundle (загружен) 'с именем' itemTableViewCell '' –

+0

Кроме того, мне даже нужен tableView. registerNib (nibName, forCellReuseIdentifier: "cell") в методе viewDidLoad()? –

+0

Вы используете раскадровку или наконечник? Я предположил, что на основе вашего кода/вопроса ... – Wain

Смежные вопросы