2017-10-19 10 views
0

私は@IBActionを使用するまで、tableViewCell、 をクリックして関数をトリガーする必要がありますが、このオプションはボタンタイプでのみ利用可能です(別の方法では見つかりませんでした)。 this私は今の方法です:swift @IBAction from tableViewCell

@IBAction func springPrs(_ sender: Any) { 
    //doing stuff.. 
} 

今は@IBOutlet

@IBOutlet weak var nextTrackCell: nextTableViewCell! 

を持っていると私はそれをクリックすることで、機能をトリガします。どんな助け?

答えて

1

これは間違ったアプローチである、あなたはdidSelectRowAt呼ばUITableViewDelegateからデリゲートメソッドを実装する必要があります。それはそこにMVCデザインパターンに違反しているためあなたは、テーブルビューのセルに直接アクションを追加しないでください

public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
      //do your stuff here. 
     } 
+0

私はテーブルビューの外でシングセルを作成しました。私は迅速に新しいです。これで)しかし、まだ、方法はありますか? – hhh

+0

これは、あなたが望むことを行う正しい方法です。また、テーブルビューの外にセルを作成しないでください。セルは単独ではなく、テーブルビューで使用するために作成されます。単一のセルを使用している場合は、代わりに –

+0

のUIViewで切り替えることを検討し、UIviewの「onclick」関数を作成するにはどうすればよいですか? – hhh

0

をこれを本当に簡単にするために、すでにUITableViewDelegateに組み込まれている便利なコールバックです。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if indexPath.row == 0 { 
     // do something when the top row tapped 
    } else { 
     // do something when any other row is tapped 
    } 
} 
+0

私は、オーバーライドキーワードはコンパイラエラーを引き起こすと思います。 –

+0

@LuizFernandSalvaterraあなたは正しい、私の謝罪。デリゲートコールバックが既に実装されている 'UITableViewController'を使用している場合、これがコードになります。 –

+0

ええ、私もこのアプローチをハハハ –

関連する問題