每次我滚动 cell.viewWithTag 都会在展开时给出致命错误发现 nil
Posted
技术标签:
【中文标题】每次我滚动 cell.viewWithTag 都会在展开时给出致命错误发现 nil【英文标题】:Everytime I scroll cell.viewWithTag will give fatal error while unwrapping found nil 【发布时间】:2015-07-30 08:52:30 【问题描述】:每次滚动时我都有一个带有单元格的表格视图,但出现致命错误:在展开可选值时意外发现 nil
它会将此代码标记为绿色:let button = cell.viewWithTag(1009) as! UIButton
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("ChecklistItem") as! UITableViewCell
let label = cell.viewWithTag(1000) as! UILabel
let button = cell.viewWithTag(1009) as! UIButton
button.tag = indexPath.row
...
【问题讨论】:
请在问题正文中添加您的cellForRowAtIndexPath
方法代码,以便更好地理解。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell let cell = tableView.dequeueReusableCellWithIdentifier("ChecklistItem") as! UITableViewCell let label = cell.viewWithTag(1000) as! UILabel let button = cell.viewWithTag(1009) as! UIButton button.tag = indexPath.row
没有解决问题,我已经有了括号和return语句。这是一样的......
那么在你的情况下,我建议使用自定义单元类而不是处理标签值。参考:***.com/questions/24170922/…
【参考方案1】:
我通过添加这个 if 子句解决了这个问题:
if button == nil
println("Do nothing");
else
button!.tag = indexPath.row
【讨论】:
【参考方案2】:获取致命错误:在打开可选值时意外发现 nil 导致您在设置标签后从 viewWithTag 获取按钮
let button = cell.viewWithTag(1009) as! UIButton
**button.tag = indexPath.row**
所以没有更新按钮标签,在按钮可访问性标识符中传递所需信息
let button = cell.viewWithTag(1009) as! UIButton
button.accessibilityIdentifier = "\(indexPath.row)"
获取按钮信息后
let indexRow = Int(button.accessibilityIdentifier!)
【讨论】:
【参考方案3】:我遇到了同样的问题,并通过(可选绑定)'if let' 或 'Guard let' 解决了它
if let button : UIButton = cell.viewWithTag(1009) as? UIButton
button.tag = indexPath.row
// your code...
else
print("Do nothing");
【讨论】:
以上是关于每次我滚动 cell.viewWithTag 都会在展开时给出致命错误发现 nil的主要内容,如果未能解决你的问题,请参考以下文章
使用 Swift 3 和 Alamofire 在 JSON url 中的应用程序中没有显示任何内容
如何将照片(以及标签和按钮)放入滚动视图中,每次在情节提要中添加新照片时都会延长它
每次我重新加载 tableview 部分时 UITableView 都不会向上滚动