My problem is that when I run the project and click the first textfield ( the others are empty for now ) the app crashes with this error :
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:
<UICompatibilityInputViewController: 0x12dd4c600>
should have parent view controller:<Sai_Service.ServiceAppointment: 0x12dd151a0>
but requested parent is:<UIInputWindowController: 0x12e00b600>
'.
This is my code:
import UIKit
class ServiceAppointment: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var ScrollView: UIScrollView!
@IBOutlet weak var pickerView: UIPickerView!
@IBOutlet weak var StateField: UITextField!
@IBOutlet weak var CityField: UITextField!
@IBOutlet weak var VehRegNumberField: UITextField!
@IBOutlet weak var LocationField: UITextField!
@IBOutlet weak var CurrentKmsField: UITextField!
@IBOutlet weak var apptDateFIeld: UITextField!
@IBOutlet weak var apptTypeField: UITextField!
@IBOutlet weak var pickupField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
ScrollView.contentSize.height = 1000
pickerView.hidden = true;
StateField.text = States[0]
self.pickerView.dataSource = self;
self.pickerView.delegate = self;
self.StateField.inputView = pickerView
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
var States = ["Italy","United States","UK","France"]
//MARK: - Delegates and data sources
//MARK: Data Sources
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return States.count
}
//MARK: Delegates
func pickerView2(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return States[row]
}
func pickerView3(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
StateField.text = States[row]
pickerView.hidden = true;
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
pickerView.hidden = false
return false
}
}
I think it's a problem of multiple view, so I wrote in the viewDidLoad
:
self.StateField.removeFromSuperView()
but then all the ScrollViews disappeared obviously.
How I can make this work so that when I press the textfield, the pickerview appears?