###前提・実現したいこと
現在swiftを勉強中です。UITableViewでセクション分けとセクション部分のカスタマイズを行いたいのですが、具体的なやり方がわからず困っております。
具体的には、セクションの背景色と文字色を変更できればと考えております。
初歩的な質問かと思いますが、よろしくお願い致します。
###試したこと
①セクションにlabelを設定して、それの背景色を設定する、を試しましたがこの関数では、Stringしか返せず。
返り値をUIViewにすると「objective-C method~」のようなエラー表示。
func tableView(tableView:UITableView, titleForHeaderInSection section:Int) -> String?{ let label = UILabel(frame: CGRect(x:0, y:0, width: tableView.bounds.width, height: 50)) label.text = taskSections[section] label.backgroundColor = UIColor.redColor() return label.text }
② @IBOutlet weak var taskList: UITableView!を行ったUITableViewのtableHeaderViewを設定しようとしたが、「EXC_BAD_INSTRUCTION」のエラーが発生。
let headerView = self.taskList.tableHeaderView as UIView! headerView.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 500) self.taskList.tableHeaderView = headerView
###ソース
回答頂いたものをもとに更新しております。
import UIKit class TaskListUITableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { override func viewDidLoad() { super.viewDidLoad() self.navigationItem.titleView = UIImageView(image:UIImage(named:"text_nav_title_today")) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //ストーリーボード連携 @IBOutlet weak var taskList: UITableView! //データ var taskTitles = [["task01","task02"],["task03"]] var taskSubTitles = [["subtask01","subtask02"],["subtask03"]] var taskSections:[String] = ["projectA","projectB"] //テーブル定義 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return taskTitles[section].count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("TaskCell") as! TaskListTableCell var title = taskTitles[indexPath.section] var subtitle = taskSubTitles[indexPath.section] cell.setCell(title[indexPath.row], subTitle: subtitle[indexPath.row]) return cell } //section func tableView(tableView:UITableView, titleForHeaderInSection section:Int) -> String?{ return taskSections[section] } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return taskSections.count } // Section Header View func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { // HeaderのViewを作成してViewを返す let headerView = UIView() let label = UILabel() label.text = "セクション" label.textColor = UIColor.whiteColor() headerView.backgroundColor = UIColor.redColor() // いろいろ・・・ headerView.addSubview(label) return view } // Section Header Height func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { // ヘッダーViewの高さを返す return 40 } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/12 10:13 編集
2017/02/12 10:17
2017/02/12 10:35
2017/02/12 10:42
2017/02/12 10:45
2017/02/12 10:52
2017/02/12 11:07
2017/02/12 11:08
2017/02/12 11:23 編集
2017/02/12 11:23
2017/02/12 12:43
2017/02/12 13:01
2017/02/12 13:08