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

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

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

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

Q&A

解決済

1回答

915閲覧

swiftのtableviewcellの背景色を変更したい

mmmmssy

総合スコア11

Swift

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

0グッド

0クリップ

投稿2019/06/22 06:13

編集2019/06/23 14:53

swiftでsliderの値を変えるとtableviewCellの色が変わるアプリを作っています。
しかし何度試しても色が変わりません。
最終的にはRBGの値を少しずつずらしたグラデーションを表示したいのでtableviewcellの色の変更の仕方を教えてください。

該当のソースコード

swift

1import UIKit 2 3class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 // Do any additional setup after loading the view. 8 } 9 10 var R:CGFloat! 11 var G:CGFloat! 12 var B:CGFloat! 13 14 @IBAction func rSlider(_ sender: UISlider) { 15 R = CGFloat(sender.value) 16 rLabel.text = String(sender.value) 17 } 18 @IBAction func gSlider(_ sender: UISlider) { 19 G = CGFloat(sender.value) 20 gLabel.text = String(sender.value) 21 } 22 @IBAction func bSlider(_ sender: UISlider) { 23 B = CGFloat(sender.value) 24 bLabel.text = String(sender.value) 25 } 26 @IBOutlet weak var rLabel: UILabel! 27 @IBOutlet weak var gLabel: UILabel! 28 @IBOutlet weak var bLabel: UILabel! 29 @IBOutlet weak var colorTableView: UITableView! 30 31 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 32 return 10 33 } 34 35 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 36 let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier:"colorCell", for: indexPath) 37 cell.contentView.backgroundColor = UIColor.yellow 38 //(red:R,green:G,blue:B,alpha:1) 39 return cell 40 } 41} 42

試したこと

sliderの値がうまくUIColorに入ってないのが原因かなと思い、コメント文にしてまず普通に黄色に変えてみようと思いましたが白のままです。該当のソースコードにはその時のプログラムを貼っています。

補足情報(FW/ツールのバージョンなど)

swift version 5.0.1

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

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

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

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

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

nakasho_dev

2019/06/22 14:12

UITableViewの背景色を変えたいのでしょうか、それともUITableViewCellの背景色を変えたいのでしょうか。
mmmmssy

2019/06/22 16:39

最終的にはRGBそれぞれの値を少しずつずらしたグラデーションのような形で表示したいので、TableViewCellの背景色を変えたいです
nakasho_dev

2019/06/23 16:39

たぶん、スライダーを移動したタイミングでCellの色を変えたとしてもグラデーションは表現できないような気がします。移動したタイミングで全部のCellを変えたとしたらグラデーションになりませんし。 numberOfRowsInSectionの数とcellForRowAtで呼ばれた際のindexで色を変えるようにした方がCell毎にグラデーションでが実装できるかと思います。
mmmmssy

2019/06/23 18:37

Cell毎にグラデーションのつもりでした!説明不足ですみません。 indexで色を変えるにはどう言ったプログラムになるんでしょうか? おこがましくてすみません。
fuzzball

2019/06/26 07:03 編集

そもそもセルが表示されていないのでは?tableView(_:cellForRowAt:) 呼ばれてます? 呼ばれていないなら dataSource の設定を確認して下さい。
mmmmssy

2019/06/26 08:43

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ ここの部分は別物ですか?
fuzzball

2019/06/26 09:28

それのことです。呼ばれてますか?
mmmmssy

2019/06/26 09:45

はい! 一応あります。。。
nakasho_dev

2019/06/26 10:24

cellForRowAtを記述しているか否かではなく、呼ばれているかが重要です。 ブレークポイントなどで確認していますか? もし呼ばれていない場合、colorTableView.reloadData()をviewDidLoadの中で呼んでみてはどうでしょう?
mmmmssy

2019/06/26 10:45

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ この中にprint("a")って書いてデバックエリアにaが表示されないってことは呼ばれてないですか?
nakasho_dev

2019/06/26 13:18

datasourceの設定していますか?
mmmmssy

2019/06/28 08:24

設定できているかはどうしたら分かりますか?
nakasho_dev

2019/06/28 17:47

回答のコメント欄で返しています。
guest

回答1

0

ベストアンサー

要素数とIndex.rowで割合を出してグラデーションをかけるのはどうでしょう?
下記にRedのみ変更させる方法の例を書いてみました。
ブラウザで書いていて動くは分からないけれど意図は伝わるかと思います。

Swift

1 2let hogeList: [Int] = [140,242,210,85,52,4,12,23,29,100] //とりあえず10要素 3 4 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 5 return hogeList.count //要素数を返す 6 } 7 8 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ 9 let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier:"colorCell", for: indexPath) 10 let rColor: CGFloat = indexPath.row / hogeList.count 11 cell.contentView.backgroundColor = UIColor(red:rColor , green:1.0 , blue:1.0 , alpha: 1.0) 12 13 return cell 14 }

ちゃんとしたグラデーションをかけたいなら以下のようなサイト等で、どのように数値化すべき過学習したほうが良いです。

投稿2019/06/24 11:34

nakasho_dev

総合スコア2655

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

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

mmmmssy

2019/06/26 06:52

回答ありがとうございます。 記載されたプログラムを書いてみましたがやはり実行してみてもtableviewcellに色はついてくれません。白のままです。 他になにか思い当たる節があったら教えてください。
nakasho_dev

2019/06/27 11:15

viewDidLoadで以下を記述ください。 self.colorTableView.dataSource = self;
mmmmssy

2019/06/29 05:44

ありがとうございます! 色が出てくるようになりました! ただ、スライダーの値が背景色に反映してくれません????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問