TableView内のセルにTextFieldを配置し値を取得・表示させたい
TableView内のセルにTextFieldを配置し、パスワード変更画面のような画面を作成したいのですが、初心者のためうまく作成することができません。
記載したソースコードは下記のとおりですが、シュミレータで起動するとうまく動作しません。
下記の画像のとおり、各セルを選択した際に表示が意図しない動きとなってしまします。
期待する動作としては、各セルを選択した際に、TextFieldがフォーカス状態となる状態を期待しております。
ChangePasswordViewController.swift
class ChangePasswordViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {
//データ
var dataInSection = [["現在のパスワード"],["新しいパスワード","パスワードを確認"]]
//セクション
var sectionIndex:[String] = ["",""]
//データを返す
func tableView(_ tableView:UITableView, cellForRowAt indexPath:IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PasswordCell", for:indexPath as IndexPath) as! ChangePasswordTableViewCell
var section = dataInSection[indexPath.section]
cell.textLabel?.text = section[indexPath.row]
return cell
}
//データの個数を返す
func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int {
return dataInSection[section].count
}
//セクション名を返す
func tableView(_ tableView:UITableView, titleForHeaderInSection section:Int) -> String?{
return sectionIndex[section]
}
//セクションの個数を返す
func numberOfSections(in tableView: UITableView) -> Int {
return sectionIndex.count
}
// Cell が選択された場合
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.dequeueReusableCell(withIdentifier: "PasswordCell", for:indexPath as IndexPath) as! ChangePasswordTableViewCell
cell.becomeFirstResponder()
}
}
ChangePasswordTableViewCell.swift
class ChangePasswordTableViewCell: UITableViewCell {
@IBOutlet weak var passwordTextField: UITextField!
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
}
}