每次我滚动 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 中的应用程序中没有显示任何内容

UIScrollView 每次访问视图都会改变滚动位置

如何将照片(以及标签和按钮)放入滚动视图中,每次在情节提要中添加新照片时都会延长它

每次我重新加载 tableview 部分时 UITableView 都不会向上滚动

每次将新元素推入列表时,列表的 ReactJS 渲染时间都会增加

无法识别的选择器发送到实例 - Swift