RealmSwiftのデータをUITextField内のUIPickerViewで参照修正したい。
いつもお世話になっております。
当方初心者です。
表題の件の通りです。
現在アプリをRealmSwiftを使って作っています。
別のViewでチーム名と選手名を新規登録をします。
それを下記のVeiwのUITextFieldをタップした際、既に登録済みのチーム・選手がUIPickerVeiwで出てきて、そのチーム・選手を選択して修正し更新ができるようにしたいです。
取り敢えず自分の分かる範囲で下記のコードを書きましたが、
token = realm.addNotificationBlock { [weak self] (notification, realm) -> Void in self?.pickerView.reloadAllComponents()
の部分で、
Ambiguous reference to member 'pickerview(_:titleForRow:forConponet:)'
とエラーが立ちます。
文法的に誤っているようですが、何がどう誤っているのか?がわかりません。
どなたか解る方がいらっしゃいましたら、ご教授下さい。
お願いします。
import UIKit
import RealmSwift
class ViewController3: UIViewController,UIPickerViewDelegate,UIToolbarDelegate, UITextFieldDelegate{
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var textField2: UITextField!
@IBOutlet weak var teamLabel: UILabel!
@IBOutlet weak var nameLabel: UILabel!
var team:String!
var name:String!
var team1:String!
var name1:String!
var user: Results<User>?
var token: NotificationToken?
//変数指定↓
var toolBar: UIToolbar!
override func viewDidLoad() {
super.viewDidLoad()
let realm = try! Realm()
let user = realm.objects(User)[0]
team1 = user.team
teamLabel.text = team1
name1 = user.name
nameLabel.text = name1
//pickerview↓
let pickerView = UIPickerView()
pickerView.showsSelectionIndicator = true
pickerView.delegate = self
textField.inputView = pickerView
toolBar = UIToolbar(frame: CGRectMake(0, self.view.frame.size.height/6, self.view.frame.size.width, 40.0))
toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0)
toolBar.barStyle = .BlackTranslucent
toolBar.tintColor = UIColor.whiteColor()
toolBar.backgroundColor = UIColor.blackColor()
let toolBarBtn = UIBarButtonItem(title: " 完了 ", style: .Done, target: self, action: #selector(ViewController3.tappedToolBarBtn(_:)))
toolBarBtn.tag = 1
toolBar.items = [toolBarBtn]
textField.inputAccessoryView = toolBar
token = realm.addNotificationBlock { [weak self] (notification, realm) -> Void in
self?.pickerView.reloadAllComponents()
}
}
@IBAction func textFieldDidEndOnExit(sender: UITextField) {
let realm = try! Realm()
let user = User()
try! realm.write {
team = textField.text
user.team = team
name = textField2.text
user.name = name
}
}
//キーボードを閉じる
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
//pickerに表示する列数を返す
func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int {
return 1
}
//pickerに表示する値を返すデリゲートメソッド
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> Int? {
if let user = user {
return user.count
}
return 0
}
//pickerが選択された際に呼ばれるデリゲートメソッド
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if let user = user {
return user[row].name
}
return nil
}
func tappedToolBarBtn(sender: UIBarButtonItem) {
textField.resignFirstResponder()
}
}