当我长按UITableView自定义标题单元格时,应用程序崩溃

时间:2015-06-11 14:50:27

标签: ios swift uitableview ios8

我有一个简单的UITableViewController,其中包含一组数据,员工的名字和姓氏。我创建了一个自定义标题原型单元格,只有一个Label来设置标题标题。

然而问题是,当桌面上的标题单元格中的用户“长按”时,应用程序崩溃。

在附加的屏幕截图中,当“长按”时,Header0,Header1,Header3,Header4,应用程序崩溃。 但是,红色椭圆中标记的标题部分是标题的简单UIView,但没有任何标签或任何控件。奇怪的是如果用户“长按”这个空头,应用程序不会崩溃。

标题视图的代码

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        if ( section == 2 ){
            var emptyView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: 50))
            return emptyView
        }

        let cell = tableView.dequeueReusableCellWithIdentifier("HeaderCell") as! UITableViewCell

        let c = cell as! HeaderTableViewCell
        c.contentView.backgroundColor = UIColor.darkGrayColor()
        c.headerTextLabel.text = "Header" + toString(section)
        return c.contentView
    }

想知道发生了什么。我最近将Xcode更新为6.3,其中包含Swift 1.2。如何解决这个问题?

非常感谢任何帮助

Sample UITableView with Custom Header cell

2 个答案:

答案 0 :(得分:2)

我通过删除单元格内容视图(c.contentView)上的手势来解决此问题。

 if let recognizers = c.contentView.gestureRecognizers
  {
  for recognizer in recognizers {
  c.contentView.removeGestureRecognizer(recognizer as! UIGestureRecognizer)
  }
  }

答案 1 :(得分:0)

您也可以从这里尝试解决方案:https://stackoverflow.com/a/31877323/67667,即禁用标题单元格的用户交互: c.contentView.userInteractionEnabled = false