前提・実現したいこと
ここに質問の内容を詳しく書いてください。
①UISlidderを動かすと、UILabelに表示される。
②UISlidderを動かすと、UITableViewの背景色が指定されたRGBカラーになる
③UISlidderを動かすと、UITableViewのtextプロパティに、RGB値が表示される(近い値が12個表示される)
この3つの機能を実装したiOSアプリケーションを作っています。
そこで、②③に関して問題があります。
発生している問題・エラーメッセージ
UISliderを動かしても、UITableViewの背景色が変わりません。
また、cellのtextプロパティにRGB値が表示されません。
該当のソースコード
swift
1import UIKit 2 3class ViewController: UIViewController, UITableViewDelegate { 4 5 6 @IBOutlet weak var redLabel: UILabel! 7 @IBOutlet weak var greenLabel: UILabel! 8 @IBOutlet weak var blueLabel: UILabel! 9 @IBOutlet weak var RGBLabel: UILabel! 10 11 @IBOutlet weak var blueValue: UISlider! 12 @IBOutlet weak var redValue: UISlider! 13 @IBOutlet weak var greenValue: UISlider! 14 15 @IBOutlet weak var table: UITableView! 16 var r = 255, g = 255, b = 255 17 18 func rgb(r: Int, g: Int, b: Int, alpha: CGFloat) -> UIColor{ 19 return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha) 20 } 21 22 func check(_ value: Int) -> Int{ 23 if value > 255 { 24 let _ = 255 25 } 26 if value < 0 { 27 let _ = 0 28 } 29 return value 30 } 31 32 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 33 34 return 13 35 } 36 37 func tableView(tableiew: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 38 39 let cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "Cell") 40// UITableViewCell. 41 var red = r, green = g, blue = b 42 switch indexPath.row { 43 case 1: 44 red = check(r-20) 45 case 2: 46 red = check(r-10) 47 case 3: 48 red = check(r+10) 49 case 4: 50 red = check(r+20) 51 case 5: 52 green = check(g-20) 53 case 6: 54 green = check(g-10) 55 case 7: 56 green = check(g+10) 57 case 8: 58 green = check(g+20) 59 case 9: 60 blue = check(b-20) 61 case 10: 62 blue = check(b-10) 63 case 11: 64 blue = check(b+10) 65 case 12: 66 blue = check(b+20) 67 68 default: 69 break 70 } 71 72 cell.backgroundColor = rgb(r: red, g: green, b: blue, alpha: 1) 73 74 cell.textLabel?.text = String(NSString(format: "%02x%02x%02x", red, green, blue)).uppercased() 75 76 return cell 77 } 78 79 func changeValue() { 80 81 RGBLabel.text = "RGB value is #" + String(NSString(format: "%02x%02x%02x", r, g, b)).uppercased() 82 table.reloadData() 83 } 84 85 @IBAction func redSlide(_ sender: Any) { 86 print(redValue) 87 r = Int(redValue.value) 88 redLabel.text = "R:(r)" 89 changeValue() 90 } 91 92 @IBAction func greenSlide(_ sender: Any) { 93 print(blueValue) 94 b = Int(blueValue.value) 95 blueLabel.text = "B:(b)" 96 changeValue() 97 } 98 99 @IBAction func blueSlide(_ sender: Any) { 100 print(greenValue) 101 g = Int(greenValue.value) 102 greenLabel.text = "G:(g)" 103 changeValue() 104 } 105 106 override func viewDidLoad() { 107 super.viewDidLoad() 108 109 redLabel.text = "R:(r)" 110 blueLabel.text = "B:(b)" 111 greenLabel.text = "G:(g)" 112 113 // Do any additional setup after loading the view. 114 } 115} 116
試したこと
cell.backgroundColor = rgb(r: red, g: green, b: blue, alpha: 1)
の部分を
cell. contentView .backgroundColor = rgb(r: red, g: green, b: blue, alpha: 1)
に変えてみましたがダメでした。
補足情報(FW/ツールのバージョンなど)
Xcode(Version 11.3 (11C29))
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。