ios開発を始めて、3ヶ月ぐらいが経ちました。
まだまだ勉強中ではありますが、四苦八苦しながら開発しています。
少しでもレベルアップしたいと思い、今回はstoryboardを使用せず、コードだけでtableViewを表示してみました。
[開発環境]
Xcode9
Swift4
storyboardを使用せずに、tableViewを表示させようとした時に、「cellのidentifierはどうやって表示させればいいんだ?」と思いました。
色々調べてみると下記のようなコードになりました。
今回は、UITableViewControllerを使用しましたが、UIViewControllerにdelegateを設定する方法もできると思います。
ただ、storyboardに慣れてしまうと、なかなかやりにくいのが正直なところですね。
慣れていくしかないかなと・・・頑張ります!!
TableViewController.swift
class TableViewController: UITableViewController {
let dataList = ["0時〜6時","7時〜12時","12時〜18時","18時〜0時",]
let cellIdentifier = "Cell"
override func viewDidLoad() {
super.viewDidLoad()
let backButton = UIBarButtonItem(title: "戻る", style: UIBarButtonItemStyle.plain, target: self, action: #selector(TableViewController.back(_:)))
self.navigationItem.leftBarButtonItem = backButton
self.navigationItem.title = "周辺の交通状況"
//空白のセルは非表示に設定
self.tableView.tableFooterView = UIView(frame: CGRect.zero)
self.tableView.rowHeight = 70
//セルの境界線を端まで表示
UITableView.appearance().separatorInset = UIEdgeInsets.zero
//cellIdentifierをここで設定。
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@objc func back(_ sender: UIButton) {// selectorで呼び出す場合Swift4からは「@objc」をつける。
self.dismiss(animated: true, completion: nil)
}
// MARK: - Table view data source
override func tableView(
_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataList.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath)
cell.textLabel?.text = dataList[indexPath.row]
cell.textLabel?.font = UIFont(name: "Helvetica", size: 20.5)
cell.textLabel?.frame = CGRect(x: 0, y: 1000, width: 100, height: 100)
return cell
}
}