質問編集履歴

1 少し見やすくしました

hoo

hoo score 12

2018/12/11 16:51  投稿

カスタムセルの中でindexPath.rowを取得したい
閲覧ありがとうございます。
tableView上でカスタムセルを使うのにあたり「.swift」の新しいファイルを作りそこにカスタムセルの中身をコードで書いています。
カスタムセルの中に配置したボタンがタップされたら、tableViewのindexPath.rowを使用した処理を書きたいのですが、どうすればよいか検討もつきません。
分かる方がいらっしゃいましたら教えてください。
```Swift
 
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {  
 
 // 端末のサイズを取得  
 let heightOfUsersIPhone = UIScreen.main.bounds.size.height // 高さ  
 let widthOfUsersIPhone = UIScreen.main.bounds.size.width // 横幅  
   
 // ステータスバーの高さを取得  
 let heightOfStatusBar = UIApplication.shared.statusBarFrame.size.height  
   
 override func viewDidLoad() {  
   super.viewDidLoad()  
     
   // tableViewを表示  
   let myTableView = UITableView(frame: CGRect(x: 0, y: 0, width: widthOfUsersIPhone, height: heightOfUsersIPhone-heightOfStatusBar), style: .plain)  
   myTableView.rowHeight = 45  
   myTableView.delegate     =  self  
   myTableView.dataSource   =  self  
   myTableView.allowsSelection = false  
   myTableView.register(CustomCell.self, forCellReuseIdentifier: NSStringFromClass(CustomCell.self))  
     
   view.addSubview(myTableView)  
     
 }  
 
 func numberOfSections(in tableView: UITableView) -> Int {  
   return 1  
 }  
   
 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
   return 25  
 }  
   
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
   let cell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(CustomCell.self), for: indexPath) as! CustomCell  
     
   return cell  
 }  
}  
// カスタムセルのクラス
class CustomCell: UITableViewCell {
 
 // ボタンを作成
 var botton = UIButton(frame: CGRect(x: 0, y: 0, width: 60, height: 30))
 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
   super.init(style: style, reuseIdentifier: reuseIdentifier)
   
   // ボタンを貼る
   botton.setTitle("Botton", for: .normal)
   botton.setTitleColor(.black, for: .normal)
   botton.addTarget(self, action: #selector(sample), for: .touchUpInside)
   contentView.addSubview(botton)
 }
 
 @objc func sample() {
   // ここにindexPath.rowを使った処理を書きたいです
   print("ここにindexPath.rowを使った処理を書きたいです")
 }
 
   required init?(coder aDecoder: NSCoder) {
   fatalError("init(coder:) has not been implemented")
 }
 
   override func awakeFromNib() {
       super.awakeFromNib()
       // Initialization code
   }
   override func setSelected(_ selected: Bool, animated: Bool) {
       super.setSelected(selected, animated: animated)
       // Configure the view for the selected state
   }
}  
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {  
 
 
 override func viewDidLoad() {  
   super.viewDidLoad()  
     
   // tableViewを表示  
   let myTableView = UITableView(frame: CGRect(x: 0, y: 0, width: 200, height: 400), style: .plain)  
   myTableView.rowHeight = 45  
   myTableView.delegate     =  self  
   myTableView.dataSource   =  self  
   myTableView.allowsSelection = false  
   myTableView.register(CustomCell.self, forCellReuseIdentifier: NSStringFromClass(CustomCell.self))  
     
   view.addSubview(myTableView)  
     
 }  
 
 func numberOfSections(in tableView: UITableView) -> Int {  
   return 1  
 }  
   
 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {  
   return 25  
 }  
   
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {  
   let cell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(CustomCell.self), for: indexPath) as! CustomCell  
     
   return cell  
 }  
}
```
  • Xcode

    8440 questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • Swift

    14567 questions

    Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

  • TableView

    369 questions

    TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る