質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
TableView

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

Xcode

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

Swift

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

Q&A

解決済

1回答

524閲覧

カスタムセルの中でtableViewを更新したい

hoo

総合スコア12

TableView

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

Xcode

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

Swift

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

0グッド

0クリップ

投稿2018/12/11 11:57

閲覧ありがとうございます。
tableView上でカスタムセルを使うのにあたり「.swift」の新しいファイルを作りそこにカスタムセルの中身をコードで書いています。
カスタムセルの中に配置したボタンがタップされた際、カスタムセルを表示しているtableViewを更新(reload)したいのですがやり方がわかりません。
分かる方がいらっしゃいましたら教えて下さい。
よろしくお願いします。

Swift

1// カスタムセルのクラス 2class CustomCell: UITableViewCell { 3 4 // ボタンを作成 5 var botton = UIButton(frame: CGRect(x: 0, y: 0, width: 60, height: 30)) 6 7 override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { 8 super.init(style: style, reuseIdentifier: reuseIdentifier) 9 10 // ボタンを貼る 11 botton.setTitle("Botton", for: .normal) 12 botton.setTitleColor(.black, for: .normal) 13 botton.addTarget(self, action: #selector(sample), for: .touchUpInside) 14 contentView.addSubview(botton) 15 } 16 17// ボタンがタップされた際 18 @objc func sample() { 19 20 // 21 // ここにtableViewを更新する処理を書きたいです 22 // 23 24 } 25 26 required init?(coder aDecoder: NSCoder) { 27 fatalError("init(coder:) has not been implemented") 28 } 29 30 override func awakeFromNib() { 31 super.awakeFromNib() 32 // Initialization code 33 } 34 35 override func setSelected(_ selected: Bool, animated: Bool) { 36 super.setSelected(selected, animated: animated) 37 38 // Configure the view for the selected state 39 } 40} 41 42// ViewControllerクラス 43class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 44 45 46 override func viewDidLoad() { 47 super.viewDidLoad() 48 49 // tableViewを表示 50 let myTableView = UITableView(frame: CGRect(x: 0, y: 0, width: 200, height: 400), style: .plain) 51 myTableView.rowHeight = 45 52 myTableView.delegate = self 53 myTableView.dataSource = self 54 myTableView.allowsSelection = false 55 myTableView.register(CustomCell.self, forCellReuseIdentifier: NSStringFromClass(CustomCell.self)) 56 57 view.addSubview(myTableView) 58 59 } 60 61 func numberOfSections(in tableView: UITableView) -> Int { 62 return 1 63 } 64 65 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 66 return 25 67 } 68 69 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 70 let cell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(CustomCell.self), for: indexPath) as! CustomCell 71 72 return cell 73 } 74}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

delegateを定義して、そのインスタンスをcellに設定し、ボタンを押された際にメソッドを呼び出すとかでしょうか。

reloadのみであれば、delegateの代わりにUITableViewのインスタンスを渡してしまうのが簡単かも

投稿2018/12/12 06:17

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoo

2018/12/12 09:14

回答ありがとうございます。 解決することができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問