実現したいこと
テーブルビューのセルの中のボタンをクリックすると、ポップアップが表示され、ポップアップの中のボタンをクリックすると何らかの処理が行われるようにしたいです。
タップされる前のポップアップは、カスタムセルの中にisHidden
で隠して置いています。
以下の画像のように、セルがクリックされたらポップアップをisHidden=false
にし、押されたセルのzPosition
を操作することで、ポップアップを表示することは出来たのですが、ポップアップの中のボタンが反応しません。
考えられる原因
セル内にボタンが収まっている場合はタップができたため、他のセルに被った時に何かしらが邪魔していると予想しています。
該当のソースコード
Swift
1class MainView: UIView { 2 var selectedRow:Int = Int() 3} 4extension MainView: UITableViewDataSource, UITableViewDelegate { 5 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 6 guard let cell: CustomCell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as? CustomCell else { 7 return UITableViewCell() 8 } 9 // 選択されたセルだけzPositionを1にする。 10 if indexPath.row == selectedRow { 11 cell.layer.masksToBounds = false 12 cell.layer.zPosition = 1 13 cell.tooltipView.isHidden = false 14 } else { 15 cell.layer.masksToBounds = true 16 cell.layer.zPosition = 0 17 cell.tooltipView.isHidden = true 18 } 19 } 20 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 21 selectedRow = indexPath.row // 選択されたセルの番号を変数selectedRowに代入 22 tableView.reloadData() 23 } 24}
カスタムセルクラス
Swift
1class Custom: UITableViewCell { 2 @IBAction func touchTooltipButton(_ sender: UIButton) { 3 // ここで処理したい 4 } 5}
親となるViewの領域外のボタンはタップできなかったような気がしますが。
https://tech-tokyobay.manju.tokyo/archives/228 こんなんありますね。
popoverで処理すると自由度高そうだと思うのですがどうでしょう?
https://teratail.com/questions/146500
どちらもとても参考になる内容でした。これらを元に修正を加えてみようと思います。ありがとうございます!
ベストアンサーにさせていただきたいのですが追記・修正の依頼のとこではできず…回答の方にも投稿していただければベストアンサーさせていただきます!
お役に立てたならなによりです。
解決できたならば、自分なりの解決方法を回答に記入して自己解決にしてください。誰かの参考になるかもしれません
回答1件
あなたの回答
tips
プレビュー