

Tableviewcellにサブビューとしてスクロールビューを配置し、さらにそのスクロールビュー内にUIButtonを配置、ボタンのタップイベント（buttonEvent）を上位のクラスである  
TopViewController内で処理をしたいと考えています。

下記のような構成で実装をしており、  
createCotensView()のbutton.addTargetでタップイベント（buttonEvent）の処理先をTopVIewControllerに渡しているのですが、イベントがコールされません。

どこか誤った記述をしているのでしょうか？自力では解決できず困っております、  
ご教授よろしくお願いします。

**TopVIewController.swift**

[code]

    import UIKit
    class TopViewController:UITableViewController{
    
        〜省略
    
        override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
                〜〜省略
    
            let cell = tableView.dequeueReusableCell(withIdentifier: "testcell", for: indexPath) as! tableCustomCell
    
            return cell
        }
    
        @objc func buttonEvent(_ sender: Any){
            print("ボタンが押されました")
            // ここの処理をtableCustomCellから呼び出したい！
        }
    
    }
    
    
    class tableCustomCell:UITableViewCell,UIScrollViewDelegate{
    
        // セル内に横長のスクロールビューを配置
        @IBOutlet weak var scrollView: UIScrollView!
    
        ・・・省略
    
        override func layoutSubviews() {
            super.layoutSubviews()
    
            // サブビューを作る
            let subView = createCotensView()
    
            // スクロールビューにサブビューを追加
            scrollView.addSubview(subView)
    
            // スクロールビューをサブビュー分の長さに拡張
            scrollView.contentSize = subView.frame.size
            scrollView.contentOffset = CGPoint(x:0,y:0)
    
        }
    
        // スクロールビューに追加するコンテンツビュー(サブビュー)を追加
        func createCotensView() -> UIView{
    
            // コンテンツビューに複数のUIViewを配置
            let contentView = UIView()
            // 1ページの幅と高さ(幅はデバイスで変化するのでviewに合わせる)
            let pageWidth = 240
            let pageHeight = 214
            let pageViewRect = CGRect(x:0,y:0,width:pageWidth,height:pageHeight)
    
            // 個別ビューを横方向に４つ、同じ間隔で配置
            for i in 0..<4{
                // 個別ビューを作る
                let pageView = UIView(frame: pageViewRect)
    
                // ボタンをビューの上に配置する
                let button = UIButton(type: .custom)
            　　・・・buttonのデザインを定義(省略)
    
                // TopViewControllerのbuttonEventが呼ばれない！
                button.addTarget(TopViewController(), action: #selector(TopViewController.buttonEvent(_:)), for:UIControl.Event.touchUpInside)//
    
                pageView.addSubview(button)
    
                // 個別ビューの座標を決める(ページ幅だけずらしていく)
                let left = pageViewRect.width * CGFloat(i)
                let xy = CGPoint(x:left,y:0)
                pageView.frame = CGRect(origin: xy, size: pageViewRect.size)
    
                // createPage()で作成したViewを右方向へ配置していく
                contentView.addSubview(pageView)
            }
    
    
    
            return contentView
        }
    
    
    }
    
    
    
    
    
    
    
    
[/code]


CC BY-SA 4.0
2020-01-17T08:04:14.337
62324
2020-01-17T08:04:14.337
37089
question
swift uitableview
UITableViewCell内の横長スクロールビュー内に配置されたボタン情報を受け取る方法