use*_*428 7 uitableview uisearchbar ios swift
我最近尝试将我UITableViewController改为UITableViewa UIView.我改回了这个,因为我遇到了一个错误UISearchBar,因为当我点击一个键来搜索我的应用程序时会因错误而崩溃:
fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)
在这条线上:
var cell = tableView.dequeueReusableCellWithIdentifier("rideCell") as! RideCell
Run Code Online (Sandbox Code Playgroud)
当我切换回UITableViewController这个错误消失了,一切都很好,但我只是再次测试它,它再次给我这个错误.
有人有什么建议吗?它适用于普通的表视图,就在我进行搜索时它会崩溃.标识符绝对正确.
谢谢!
编辑:
功能齐全:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("rideCell", forIndexPath: indexPath) as! RideCell
var ride: Ride
if tableView == self.searchDisplayController?.searchResultsTableView {
ride = DataManager.sharedInstance.getRideByName(searchResults[indexPath.row].name)!
} else {
ride = DataManager.sharedInstance.rideAtLocation(indexPath.row)!
}
cell.rideNameLabel.text = ride.name
var dateSinceUpdate = NSDate().timeIntervalSinceDate(ride.updated!)
var secondsSinceUpdate = Int(dateSinceUpdate)
var timeSinceUpdate = printSecondsConvert(secondsSinceUpdate)
cell.updatedLabel.text = timeSinceUpdate
if ride.waitTime == "Closed" {
cell.waitTimeLabel.text = ride.waitTime!
cell.timeBackgroundView.backgroundColor = getColorFromNumber(80)
cell.waitTimeLabel.font = UIFont(name: "Avenir", size: 13)
} else {
cell.waitTimeLabel.text = "\(ride.waitTime!)m"
cell.timeBackgroundView.backgroundColor = getColorFromNumber(ride.waitTime!.toInt()!)
cell.waitTimeLabel.font = UIFont(name: "Avenir", size: 17)
}
AsyncImageLoader.sharedLoader().cancelLoadingURL(cell.rideImageView.imageURL)
cell.rideImageView.image = UIImage(named: "Unloaded")
cell.rideImageView.imageURL = NSURL(string: ride.rideImageSmall!)
return cell
}
Run Code Online (Sandbox Code Playgroud)
use*_*428 13
发现了一个非常简单的问题解决方案.不得不改变这个:
var cell = tableView.dequeueReusableCellWithIdentifier("rideCell", forIndexPath: indexPath) as! RideCell
Run Code Online (Sandbox Code Playgroud)
对此:
var cell = self.tableView.dequeueReusableCellWithIdentifier("rideCell", forIndexPath: indexPath) as! RideCell
Run Code Online (Sandbox Code Playgroud)
有迹象表明,你看到了几个可能fatal error的nil在对话框中的消息.
可能性#1:确保你有一个UITableViewCellnamed 的子类RideTableViewCell.swift.要创建UITableViewCell的子类,只需按照以下步骤操作即可.

在viewDidLoad()函数中注册您的单元类,如下所示:
let nibCell = UINib(nibName: "RideTableViewCell", bundle: nil)
self.tableView.registerNib(nibPosts, forCellReuseIdentifier: "RideCell")
注册您的自定义单元格cellForRowAtIndexPath如下:
let cell: RideTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("RideCell", forIndexPath: indexPath) as! RideTableViewCell
可能性#2:也许当你创建自定义XIB时,你没有告诉它它属于哪个类.要设置XIB类,请按照以下步骤操作.
RideTableViewCell在那里.如果您有任何疑问,请发表评论.干杯!
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |