私の目標は、そのセルの画像ビューをタップするときにsegueを実行することです。ボタンにaddTarget
を使用すると、エラーは表示されません。ラベルや画像ビューのタップでセルを取得する方法 - UITapGestureRecognizer
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
cell.imageView.userInteractionEnabled = true
let tapImageView = UITapGestureRecognizer(target: self, action: #selector(HomeFeedViewController.tapImageView(_:)))
cell.imageView.addGestureRecognizer(tapImageView)
return cell as CastleCell
}
func tapImageView(sender: AnyObject) {
let center = sender.center
let point = sender.superview!!.convertPoint(center, toView:self.tableView) //line of error
let indexPath = self.tableView.indexPathForRowAtPoint(point)
let cell = self.tableView.cellForRowAtIndexPath(indexPath!) as! CastleCell
performSegueWithIdentifier("SegueName", sender: self)
}
エラーのラインがlet point =
です...
私が手にエラーがある:
fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)
が、私はボタンをaddTarget
を使用すると、エラーが表示されません。何が間違っているのでしょうか?ありがとう。
なぜスーパービューに2つの '!'がありますか? – keithbhunter
@keithbhunterはボタンでそれを持っていました。それはエラーなしで働く唯一の方法でした – johnniexo88
私はボタンで何が起こっていたのか分かりませんが、バックラップを強制的に解除することはほとんど間違いです。この場合、あなたの 'superview'はおそらくここではnilではありません。そしてこのコードは一度unwrapすれば動作します。しかし、あなたはそれをもう一度解きます。これはおそらくクラッシュする理由です。 – keithbhunter