2016-12-16 2 views
0

Ich benutze eine benutzerdefinierte Zelle in meinem TableView, aber wenn ich laufe, erhalte ich den Fehler, den ich in meiner Frage erwähnt habe.Ich erhalte einen Fehler - nib muss genau ein Objekt der obersten Ebene enthalten, das eine UITableViewCell-Instanz sein muss. ''

self.districtTableView.register(UINib(nibName: "PlaceCollectionViewCell", bundle: nil), forCellReuseIdentifier: "placeCell") 

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    return false 
} 

func textFieldDidEndEditing(_ textField: UITextField) { 
    // TODO: Your app can do something when textField finishes editing 

    print("The textField ended editing. Do something based on app requirements.") 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell 
    // Set text from the data model 
    cell.distLabel.text = districts[indexPath.row] 
    cell.textLabel?.font = distTextField.font 
    return cell 

Wie kann ich diesen Fehler loszuwerden. ich verschiedene Methoden verwendet, um eine Zelle in der Tabellenansicht zu registrieren. Aber es hat nicht funktioniert. bitte helfen

+0

Ihre nib Klasse von UITableViewCell verlängern muss sein muss – Scriptable

+0

Sind Sie sicher, dass Sie UITableViewCell in die xib Datei hinzugefügt? und XIB-Datei, die nur diese enthält? – Purushothaman

+0

@Purushothaman Ja. –

Antwort

1

Wenn Sie xib von tableviewcell verwenden dann registrieren Ihr xib gefällt das in viewDidLoad.

tableView.registerNib(UINib(nibName: "PlaceTableViewCell", bundle: nil), forCellReuseIdentifier: "placeCell") 

Wenn Sie benutzerdefinierte Klasse von tableViewcell verwenden, dann versuchen diese,

let placeCell : PlaceTableViewCell = tableView.dequeueReusableCell(withIdentifier: "placeCell") as! PlaceTableViewCell 

Wie ich Ihren Code Arbeit sehe ist fast richtig. Hoffe, meine Antwort hilft dir.

1

Öffnen Sie die Datei 'PlaceCollectionViewCell.xib'. Stellen Sie sicher, dass es nur eine Ansicht auf oberster Ebene gibt (sehen Sie sich das Seitenfeld an, nicht nur die Zeichenfläche, es ist möglicherweise nicht sichtbar). Stellen Sie sicher, dass in Ihrer Ansicht eine Klasse zugewiesen ist, die eine Unterklasse von UITableViewCell ist (nicht UICollectionViewCell, der Name xib sieht für mich verdächtig aus), ebenso wie den Wiederverwendungsbezeichner.

only one view on top level

has class and reuse identifier

0

mehrere Tabellenansicht Zellen in einer .xib Datei verursacht auch diesen Fehler zu haben. Durch Verschieben der Tabellenansichtszellen in eigene separate .xib-Dateien wurde mein Fehler behoben.

Spitze muss genau ein Top-Level-Objekt, das eine UITableViewCell Instanz

Verwandte Themen