2016-07-28 5 views
1

In meiner App habe ich eine textfield Form, die ich von einer Datumsauswahl gefüllt werden möchte, habe ich die Datumsauswahl als Eingabeansicht für das Textfeld und eine datePickerValueChanged func, um den Text des Textfelds bei der Auswahl zu ändern ist geändert. Mein Problem ist, dass, wenn die Daten-Picker in der App klicken weg, die ganze App mitUIDatePicker abstürzt Anwendung

stürzt

alle Ideen ‚mit abgefangene Ausnahme vom Typ NSException beendet‘? Hier ist mein Code:

@IBOutlet var startDatePickerField: UITextField! 

override func viewDidLoad() { 

    let startDatePicker:UIDatePicker = UIDatePicker() 
    startDatePicker.datePickerMode = UIDatePickerMode.dateAndTime 
    startDatePickerField.inputView = startDatePicker 
    startDatePicker.addTarget(self, action: #selector(popoverTableViewController.datePickerValueChanged(_:)), for: UIControlEvents.valueChanged) 

} 

func datePickerValueChanged(_ sender: UIDatePicker) { 

    let dateFormatter = DateFormatter() 
    dateFormatter.dateStyle = DateFormatter.Style.long 
    dateFormatter.timeStyle = DateFormatter.Style.short 
    startDatePickerField.text = dateFormatter.string(from: sender.date) 

} 

Das alles in der Klasse für den View-Controller "popoverTableViewController" enthalten ist. Vielen Dank!

Hier wird der Crash-Bericht von log ist:

2016-07-28 12: 50: 00,956 ClockIn_v2 [5935: 2.049.267] - [ClockIn_v2.popoverTableViewController startDateDidBegin:]: Unbekannter Selektor an Instanz gesendet 0x7ff571c10720 2016.07.28 12: 50: 00,961 ClockIn_v2 [5935: 2.049.267] * Beenden app aufgrund abgefangene Ausnahme 'NSInvalidArgumentException', Grund: ‚- [ClockIn_v2.popoverTableViewController startDateDidBegin]: unerkannte Selektor Instanz gesendet 0x7ff571c10720 ' * Erster Aufrufstapel: (0 CoreFoundation 0x000000010fe5986b exceptionPreprocess + 171 1 libobjc.A.dylib
0x000000010f4b124e objc_exception_throw + 48 2 Corefoundation
0x000000010fec7904 - [NSObject (NSObject) doesNotRecognizeSelector:] + 132 3 Corefoundation 0x000000010fddfed5 ___forwarding_
+ 1013 4 Corefoundation 0x000000010fddfa58 _CF_forwarding_prep_0 + 120 5 UIKit
0x000000011027aaf0 - [UIApplication sendAction: zu: aus: forEvent:] + 83 6 UIKit 0x00000001103fda69 - [UIControl sendAction: zu: forEvent:] + 67 7 UIKit 0x00000001103fdd82 - [UIControl _sendActionsForEvents: withevent:] + 444 8 UIKit 0x0000000110d5b196 - [UITextField _resignFirstResponder] + 297 9 UIK 0x000000011048d780 it - [UIResponder _finishResignFirstResponder] + 286 10 UIKit 0x0000000110d5af94 - [UITextField _finishResignFirstResponder] + 49 11 UIKit 0x000000011048d82f - [UIResponder ResignFirstResponder] + 140 12 UIKit 0x0000000110d5ae63 - [UITextField ResignFirstResponder] + 136 13 UIKit
0x000000011048d4bf - [ UIResponder becomeFirstResponder] + 358 14 UIKit 0x0000000110328dae - [UIView (Hierarchy) becomeFirstResponder] + 138 15 UIKit 0x0000000110d59d2e - [UITextField becomeFirstResponder] + 51 16 UIKit 0x00000001107af37b - [UITextInteractionAssistant (UITextInteractionAssistant_Internal) setFirstResponderIfNecessary] + 206 17 UIK
es 0x00000001107b2b46 - [UITextInteractionAssistant (UITextInteractionAssistant_Internal) oneFingerTap:] + 3823 18 UIKit
0x00000001107a081d - [UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 57 19 UIKit 0x00000001107a85b4 _UIGestureRecognizerSendTargetActions + 109 20 UIKit 0x00000001107a613b _UIGestureRecognizerSendActions + 540 21 UIKit 0x00000001107a539d - [UIGestureRecognizer _updateGestureWithEvent: Button:] + 1177 22 UIKit 0x00000001107911f2 _UIGestureEnvironmentUpdate + 1013 23 UIKit
0x0000000110790db5 - [UIGestureEnvironment _deliverEvent: toGestureRecognizers: usingBlo CK:] + 521 24 UIKit 0x000000011078ff2c - [UIGestureEnvironment _updateGesturesForEvent: Fenster:] + 286 25 UIKit 0x00000001102e945c - [UIWindow sendevent:] + 3989 26 UIKit
0x00000001102967a5 - [UIApplication sendevent:] + 281 27 UIKit
0x0000000110a632c3 dispatchPreprocessedEventFromEventQueue + 3303 28 UIKit 0x0000000110a5be75 __handleEventQueue + 4879 29 Corefoundation 0x000000010fdff5d1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 30 Corefoundation 0x000000010fde485c __CFRunLoopDoSources0 + 556 31 Corefoundation 0x000000010fde3d46 __CFRunLoopRun + 918 32 Corefoundation
0x000000010fde3754 CFRunLoopRunSpecific + 420 33 GraphicsServices
0x0000000114629a71 GSEventRunModal + 161 34 UIKit
0x0000000110278e9c UIApplicationMain + 159 35 ClockIn_v2
0x000000010eec96df Haupt + 111 36 libdyld.dylib
0x00000001136a968d + 1 beginnen) libC++ abi.dylib: endet mit abgefangene Ausnahme vom Typ NSException (LLDB)

+0

cab Sie zeigen den vollständigen Absturzbericht –

+0

Ich habe den Log-Inhalt bei Absturz zum Beitrag hinzugefügt, meinst du das? – user2662468

+0

Ist Ihr 'popoverTableViewController' korrekt initialisiert? Wenn die Instanz, die den Selektor enthält, null ist, wird eine Ausnahme ausgelöst. – NSGangster

Antwort

1

anstelle Wirkung der Zugabe mit

startDatePicker.addTarget(self, action: #selector(popoverTableViewController.datePickerValueChanged(_:)), for: UIControlEvents.valueChanged) 

öffnen es in Assistent Editor, offene Storyboard in einem Teil der rechten Maustaste auf Ihre Datumsauswahl, Klicken Sie in der Liste der Ereignisse auf "Wert geändert" (es wird ein kleines "+" - Zeichen angezeigt, wenn Sie auf dem leeren Loch davor stehen) und erweitern Sie es auf Ihre "popoverTableViewController.swift" -Datei.

+0

Vielen Dank, hat danach perfekt funktioniert :) – user2662468