## やりたいこと
switch
などで、TableViewのdetailTextLabel.textColor
を変更したいです。
## 試したこと
- 変数
cellDetailColor
を使ったが、detailTextLabelの色は変わらず。 - 変数に対して、
cell.backgroundColor = .red
などを試しに記述してみると、"Swift"以外のCellも赤色になったりして、うまくいかない。
swift
1var cellDetailColor = tableView.cellForRow(at: indexPath)?.detailTextLabel?.textColor 2 3 switch cell.detailTextLabel?.text { 4 case "Swift": 5 cellDetailColor = .red 6 case "JavaScript": 7 cellDetailColor = .yellow 8 case "PHP": 9 cellDetailColor = #colorLiteral(red: 0.1764705926, green: 0.01176470611, blue: 0.5607843399, alpha: 1) 10 case "HTML": 11 cellDetailColor = .green 12 case "Python": 13 cellDetailColor = .blue 14 case "Go": 15 cellDetailColor = #colorLiteral(red: 0.2588235438, green: 0.7568627596, blue: 0.9686274529, alpha: 1) 16 default: 17 cellDetailColor = .black 18 }
## エラー
「cellForRowAtIndexPath:を呼び出そうとしましたが、これは許可されていません。」
とエラーが出ます。
Attempted to call -cellForRowAtIndexPath: on the table view while it was in the process of updating its visible cells, which is not allowed. Make a symbolic breakpoint at UITableViewAlertForCellForRowAtIndexPathAccessDuringUpdate to catch this in the debugger and see what caused this to occur. Perhaps you are trying to ask the table view for a cell from inside a table view callback about a specific row? Table view: <UITableView: 0x7f9af4032c00; frame = (0 0; 375 812); clipsToBounds = YES; autoresize = W+H; tintColor = UIExtendedSRGBColorSpace 0.716093 0.18764 0.201993 0.854051; gestureRecognizers = <NSArray: 0x60000313e7c0>; layer = <CALayer: 0x600003f56f20>; contentOffset: {0, 216}; contentSize: {375, 1422}; adjustedContentInset: {88, 0, 34, 0}; dataSource: <CodeCheck_Test_Yumemi.SearchRootVC: 0x7f9af2405300>>
## 警告
変数cellDetailColor
に対して警告が出たが、変数を使わずとも上記のエラーで、
TableVIewのテキスト色は変更出来ない。
swift
1var cellDetailColor = tableView.cellForRow(at: indexPath)?.detailTextLabel?.textColor 2// Variable 'cellDetailColor' was written to, but never read 3// 変数 'cellDetailColor'は書き込まれましたが、読み取られませんでした
質問は以上です。
お時間あるときに、ご返信頂けましたら幸いです????
あなたの回答
tips
プレビュー