TableViewのCellが正しく表示されない
以下のサイトを参考にしてプロジェクトを作成しました。
http://an.hatenablog.jp/entry/2015/10/04/015712
cellのIdentifierは"InputTextCell"とし、LabelとTextFieldはAutoLayoutで位置を調整しました。
実行するとTableviewと空のcellが表示されるだけでLabelとTextFieldは表示されません。
何が問題でしょうか。
//viewController.swift
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, InputTextTableCellDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: InputTextTableCell = tableView.dequeueReusableCell(withIdentifier: "InputTextCell", for: indexPath) as! InputTextTableCell
// delegate設定
cell.delegate = self
return cell
}
// MARK: - UITableViewDelegate
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return InputTextTableCell.height()
}
// 追加
// MARK: - InputTextTableCellDelegate
func textFieldDidEndEditing(cell: InputTextTableCell, value: NSString) -> () {
let path = tableView.indexPathForRow(at: cell.convert(cell.bounds.origin, to: tableView))
NSLog("row = %d, value = %@", path!.row, value)
}
}
//InputTextTableCell.swift
import UIKit
// 追加
protocol InputTextTableCellDelegate {
func textFieldDidEndEditing(cell: InputTextTableCell, value: NSString) -> ()
}
class InputTextTableCell: UITableViewCell, UITextFieldDelegate {
var delegate: InputTextTableCellDelegate! = nil
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var label: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
static func height() -> CGFloat {
return 75.0
}
// MARK: - UITextFieldDelegate
internal func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
// 追加
internal func textFieldDidEndEditing(textField: UITextField) {
self.delegate.textFieldDidEndEditing(cell: self, value: textField.text! as NSString)
}
}