2017-02-01 2 views
1

Ich habe ein Problem, wenn ein UITableView in UIView setzen.UITableView innerhalb UIView in Swift 3.0

Ich setze einen Delegierten und Datenquelle und implementieren Sie alle Methoden.

Dies ist meine UIView-Klasse.

@objc class ChooserView: UIView, UITableViewDelegate, UITableViewDataSource { 


@IBOutlet weak var backgroundView: UIView! 
@IBOutlet weak var showView: UIView! 
@IBOutlet weak var tableView: UITableView!  

public class func createChooserView() -> ChooserView { 

    var view: ChooserView! 
    view = Bundle.main.loadNibNamed(String(describing: ChooserView.self), owner: self, options: nil)?.first as! ChooserView 

    _ = MLAutolayouts.fillContainer(UIApplication.shared.keyWindow!.subviews.first!, view: view) 

    //Register cell nib 
    view.tableView.register(UINib(nibName: "PhoneCell", bundle: nil), forCellReuseIdentifier: "PhoneCell") 

    return view 
    } 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return 1 
    } 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PhoneCell.self)) as! PhoneCell 

    return cell 
    } 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    print("TAP...") 
    } 
} 

Und das ist die outles

enter image description here

Wenn meine app laufen. Ich bekomme diesen Fehler

-[UIView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7fded2e772d0 

Log img.

enter image description here

Jede Idee ...

Dank.

+1

Sie haben Ihre Klasse in Code deklariert, aber sieht aus wie Sie, dass Ihre Ansicht zu erklären, vergessen haben, in IB hat den Typ Ihrer Klasse, deshalb sehen Sie '- [UIView tableView: numberOfRowsInSection:]' 'anstelle von' - [ChooserView ... ' – Ossir

+0

Wie verbinde ich den UIView ?? @Hasham –

Antwort

2

Verbinden Sie IB von dataSource und delegieren Sie an ChooserView anstelle von jeder anderen Ansicht.

Einfach Rechtsklick auf den Tisch Ansicht und Folgen Sie dem beigefügten gif für IB Anschluss richtig:

enter image description here

+0

Es funktioniert. Vielen Dank –

0

Zuerst haben Sie Outlets vom Storyboard angewendet und Sie spezifizieren auch in Code.Es gibt keine Notwendigkeit.Zweiten gibt es eine benutzerdefinierte Klasse für Ihre Tabelle, die Label oder Button enthält? Dieses Problem tritt im Allgemeinen auf, wenn Sie verpasst haben Jede IBoutlet-Verbindung mit dem Storyboard oder der angegebenen 2 Verbindung für dieselbe Steckdose wird einmal überprüft.

+0

Hallo josueh verbinden Sie Ihre uiview in ähnlicher Weise wie Sie für die Tabellenansicht. –

Verwandte Themen