複数のxibファイルを一括で管理するカスタムクラスを作成したが、、
こんにちは、一日中ハマっていたので質問させて下さい・・!
TableViewに返すCustomViewCellを作成しています。
・やりたいこと
大本のTableViewから、各xibファイルをレンダリングし、
そこでのデータを取ってきた後、それを元に処理するというのを実装しようとしたところ、
躓いてしまいました。
・状況
nibファイルを複数作成しており、そのTableViewのrowに応じて nibファイルをレンダリングしようとしております。
nibファイルには、cellにTextFieldクラスの物や、 UIPickerViewクラスのもの、 ボタンしかないものの3種類です。
以下のUITableViewCellを継承したCustomAddTrainingクラスは、複数のnibファイルに使用できるように、一つのファイルにまとめてあります。
もちろん各nibファイルにはこのCustomAddTrainingに設定してあります。
それが以下のソースです。
・問題点
現在の問題は、
myPicker :UIPickerView!と decideButton: UIButton!がnilと判定されることです。
UITextField!はnilではなく、問題なく動いているのですが、この2つがどうしてもnilとなってしまいます。
(当たり前ですが)ファイルを1つにまとめずに作れば問題なく動くのですが、
UITableViewCellを継承した一つのファイルにまとめると、宣言下のにも関わらず認識されません。
なぜなんでしょうか?ご教授願います!
import UIKit
class CustomAddTraining: UITableViewCell, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate {
let category = ["Front", "Back", "Abnominal", "Leg", "Hip"]
@IBOutlet weak var done: UIButton!
@IBOutlet weak var decideButton: UIButton!
@IBOutlet weak var myTextField: UITextField!
@IBOutlet weak var myPicker: UIPickerView!
override func awakeFromNib() {
super.awakeFromNib()
if myTextField != nil {
myTextField.delegate = self
myTextField.borderStyle = .RoundedRect
}
if myPicker.delegate != nil {
myPicker.delegate = self
}
if myPicker.dataSource != nil {
myPicker.dataSource = self
}
decideButton?.hidden = true
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func textFieldDidBeginEditing(textField: UITextField) {
decideButton.hidden = false
}
@IBAction func decideAction(sender: AnyObject) {
textFieldShouldReturn(myTextField)
}
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
decideButton.hidden = true
return true
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
myTextField.resignFirstResponder()
return true
}
//pickerに表示する列数を返すデータ・ソースメソッド
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
//行数を返す
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return category.count
}
//表示するデータを返す
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return category[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
print(category[row])
}
}