Ich bin ein Neuling in Swift. Ich bin mir sicher, dass ich etwas wirklich Grundlegendes verpasst habe. Ich versuche eine PickerView
aus meiner Sicht zu initialisieren, aus irgendeinem Grund wird die Liste nicht angezeigt. Nichts passiert, wenn ich auch auf den Picker klicke. Was vermisse ich ?Swift PickerView zeigt nichts, keine Aktion keine Liste
Seltsamer warum nicht PickerView's
haben ID's
wie Label
oder ein TextView
Hier ist der Viewcontroller Code
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
var pickerView = UIPickerView()
var pickerDataSource = ["White", "Red", "Green", "Blue"];
override func viewDidLoad() {
super.viewDidLoad()
// Initialization for Country Code pickerView
pickerView.dataSource = self
pickerView.delegate = self
pickerView.isHidden = false
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// Methods for Country Code pickerView
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerDataSource.count;
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerDataSource[row]
}
}
EDIT
ich, dass ich erkannte, hatte das IBOutlet fehlt. Um es hinzuzufügen, befolgte ich die Anweisungen unten. Aber jetzt, wenn ich ziehe und versuche, in meine Viewcontroller
Drop-Popup nie angezeigt wird.
Auch habe ich diese Zeile manuell hinzugefügt, immer noch es nicht funktioniert.
@IBOutlet weak var picker: UIPickerView!
EDIT 2
Ich versuchte, den Ausgang zum Viewcontroller ziehen fallen. Aus irgendeinem Grund bin ich jetzt Exception
Überprüfen Sie das Bild unten rechts oben bekommen, werden Sie
delegate
und ‚datasource` auf die Ansicht bemerken. Ist das ok ?
** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView numberOfComponentsInPickerView:]: unrecognized selector sent to instance 0x7faa3a40a900'
*** First throw call stack:
(
0 CoreFoundation 0x000000010dce8d4b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000010d74a21e objc_exception_throw + 48
2 CoreFoundation 0x000000010dd58f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 CoreFoundation 0x000000010dc6e005 ___forwarding___ + 1013
4 CoreFoundation 0x000000010dc6db88 _CF_forwarding_prep_0 + 120
5 UIKit 0x000000010e0ec20f -[UIPickerView _delegateNumberOfComponents] + 56
6 UIKit 0x000000010e0eb33b -[UIPickerView _updateSelectedRows] + 91
7 UIKit 0x000000010e0eb40a -[UIPickerView didMoveToWindow] + 102
8 UIKit 0x000000010e1cb256 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1799
9 UIKit 0x000000010e1cae82 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 819
10 UIKit 0x000000010e1cae82 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 819
11 UIKit 0x000000010e1bdfea __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 151
12 UIKit 0x000000010e1bded8 -[UIView(Hierarchy) _postMovedFromSuperview:] + 857
13 UIKit 0x000000010e1cde56 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1982
14 UIKit 0x000000010e1bc0d7 -[UIView(Hierarchy) addSubview:] + 838
15 UIKit 0x000000010e5d0fdb -[UINavigationTransitionView transition:fromView:toView:] + 645
16 UIKit 0x000000010e2f095b -[UINavigationController _startTransition:fromViewController:toViewController:] + 3314
17 UIKit 0x000000010e2f0ef9 -[UINavigationController _startDeferredTransitionIfNeeded:] + 874
18 UIKit 0x000000010e2f1fdb -[UINavigationController __viewWillLayoutSubviews] + 58
19 UIKit 0x000000010e4e8dd7 -[UILayoutContainerView layoutSubviews] + 223
20 UIKit 0x000000010e1d1ab8 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1237
21 QuartzCore 0x000000011368bbf8 -[CALayer layoutSublayers] + 146
22 QuartzCore 0x000000011367f440 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
23 QuartzCore 0x000000011367f2be _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
24 QuartzCore 0x000000011360d318 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 280
25 QuartzCore 0x000000011363a3ff _ZN2CA11Transaction6commitEv + 475
26 QuartzCore 0x000000011363ad6f _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 113
27 CoreFoundation 0x000000010dc8d267 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
28 CoreFoundation 0x000000010dc8d1d7 __CFRunLoopDoObservers + 391
29 CoreFoundation 0x000000010dc718a6 CFRunLoopRunSpecific + 454
30 UIKit 0x000000010e106aea -[UIApplication _run] + 434
31 UIKit 0x000000010e10cc68 UIApplicationMain + 159
32 BuzTransit 0x000000010cdb5bbf main + 111
33 libdyld.dylib 0x0000000114ce368d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
EDIT 2
ich meine Picker auf die View Controller
jetzt korrekt angeschlossen haben.
Aber ich denke, meine pickerView
ist noch nicht richtig angeschlossen. Beachten Sie das Bild unten, ich vermute, dass der Kreis mit einem fetten Punkt markiert werden sollte. Wie ich schon sagte der Drag Drop von Picker zu ViewController.swift
funktioniert einfach nicht.
EDIT 4
Ich hatte Xcode neu zu starten und die Viewcontroller Namen meinen Storyboard zu erwähnen. Diese 2 Dinge, die ich dann ziehen konnte, lassen ein IBOutlet von meinem Storyboard auf den View-Controller fallen. Und der Kreis mit einem FAT DOT ist endlich in meinem ViewController verbunden.
erstellen IBOutlet für die UIPickerView anschließen müssen . –
sind Sie die Pickerview im Programm erstellt –
@ Anbu.Karthik Nein, ich habe nicht die PickerView programmgesteuert erstellt, zog ich es und legte es auf dem Storyboard. – Siddharth