Wo ist das anbei?
UI View (inclusive Label u. TextField), Keyboard (mit scrollen des Views pro TexField)
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
-
In deinem vorherigen Screenshot sieht man, dass dein TextField nicht mit dem Storyboard verbunden ist (Zeile 60).
Das ist auch der Fehler, weil es nil ist. -
Bitte poste doch deinen Code als Text (in Code-Tags) und nicht als Screenshots. In keinem Screenshot sieht man, wie du deinen ViewController instanzierst.
-
Michael schrieb:
In keinem Screenshot sieht man, wie du deinen ViewController instanzierst.
-
Evtl. erzeugt er auch einfach einen neuen 2. ViewController per ViewController() und verwendet nicht den aus dem Storyboard.
-
Quellcode: ViewController.swift
- import UIKit
- import Foundation
- class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate {
- func numberOfComponents(in pickerView: UIPickerView) -> Int {
- return 1
- }
- func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
- return priorityTypes.count
- }
- func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
- return priorityTypes[row]
- }
- func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
- seletedPriority = priorityTypes[row]
- textField.text = seletedPriority
- }
- var seletedPriority : String?
- var priorityTypes = ["Herr", "Frau", "Mr"]
- func createPickerView()
- {
- let pickerView = UIPickerView()
- pickerView.delegate = self
- textField.inputView = pickerView
- }
- @objc func dissmissPickerView()
- {
- let toolBar = UIToolbar()
- toolBar.sizeToFit()
- let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.dissmissPickerView))
- toolBar.setItems([doneButton], animated: false)
- toolBar.isUserInteractionEnabled = true
- textField.inputAccessoryView = toolBar
- }
- @objc func dissmissKeyboard()
- {
- view.endEditing(true)
- }
- @IBOutlet weak var textField: UITextField!
- override func viewDidLoad() {
- super.viewDidLoad()
- createPickerView()
- dissmissPickerView()
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- }
- }
Quellcode: AppDelegate.swift
- import UIKit
- import Foundation
- import CoreData
- import CoreLocation
- import MobileCoreServices
- import MobileEngageSDK
- @UIApplicationMain
- class AppDelegate: UIResponder, UIApplicationDelegate {
- var window: UIWindow?
- private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
- // Override point for customization after application launch.
- return true
- }
- }
In Zeile 60 ist das TextField verbunden, leider gibt es die gleichen Fehler aus.
Anbei meine ViewController.swift und meine AppDelegate.swift.
an folgender Stelle: textField.inputView = pickerView Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
und
createPickerView() hread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value -
Weil dein Textfield nil ist, du kannst die Fehlermeldung auch noch so oft schicken.
Also nutzt du den ViewController nur aus dem Storyboard und initialisierst keinen neuen irgendwo?
Und nein, wenn es verbunden wäre und du die richtige Instanz verwendest, tritt dieses Problem nicht auf. -
Ok, was mach ich falsch, steh gerade total auf dem Schlauch.
Ja, genau ich nutz nur den ViewController nur aus dem Storyboard, initialisiert habe ich keinen. -
-
kann es sein das er den PickerView nicht erstellen kann?
das wird ausgegeben:
2018-10-25 10:14:47.774298+0200 KIT[2591:282163] [framework] CUIThemeStore: No theme registered with id=0
nil
<UIPickerView: 0x7fc814c1ca70; frame = (0 0; 320 216); clipsToBounds = YES; layer = <CALayer: 0x6000035da4a0>>Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von iOSFreak ()
-
Wenn Du die beiden oben aufgeführten print() Zeilen eingefügt hast, dann ist eindeutig das textField nicht verbunden, da nil.
Der pickerView konnte erzeugt werden (<UIPickerView: 0x7fc814c1ca70; frame = (0 0; 320 216); clipsToBounds = YES; layer = <CALayer: 0x6000035da4a0>>)
Lösung: Verbinde im Storyboard das Outlet textField von dem ViewController mit dem TextField. -
das habe ich, leider wird immer noch der selbe Fehler ausgegeben zu meinem Unverständnis.
An was kann dies noch liegen? -
iOSFreak schrieb:
das habe ich, leider wird immer noch der selbe Fehler ausgegeben zu meinem Unverständnis.
-
mehr wie verbinden kann ich es ja nicht.
-
Dan lade das Projekt hoch.Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
-
Ok, dann glaube ich es jetzt
Dann lösch mal bitte Derived Data und mach einen Clean Build. -
Cool, vielen Dank!
Der Fehler wird leider immer noch ausgegeben. -
Das TextField befindet sich auch als Subview in dem View von dem ViewController, richtig?
Das view Outlet von dem ViewController ist auch richtig mit dem View verbunden, in dem sich das TextField befindet? -
Lad das Projekt mal hier hoch, ich schau drüber.
-
Tags