Мое приложение - это простой 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
методе.
Большое вам спасибо за помощь!
Я сделал это и получил сообщение об ошибке: Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Не удалось загрузить NIB в пакете:« NSBundle Users/brandonhoglund1/Library/Developer/CoreSimulator/Devices/3EB433B8- 6ED6-48E2-90F9-63E7FD066620/data/Containers/Bundle/Application/317B3CC1-A9CB-4D2B-833A-D0ED1A5E7084/Ivy News.app> (загружен) 'с именем' itemTableViewCell '' –
Кроме того, мне даже нужен tableView. registerNib (nibName, forCellReuseIdentifier: "cell") в методе viewDidLoad()? –
Вы используете раскадровку или наконечник? Я предположил, что на основе вашего кода/вопроса ... – Wain