webentwicklung-frage-antwort-db.com.de

warum bekomme ich "Muss autoresizing Maske in Einschränkungen übersetzen, um _setHostsLayoutEngine: YES zu haben" in xcode 6 beta

Ich habe den folgenden Code in einem Swift UITableViewController, aber ich erhalte die folgende Anweisung: "Muss autoresizing Maske in Einschränkungen übersetzen, um _setHostsLayoutEngine: YES-Ausnahme in der zweiten Zeile zu haben. Ich habe keine Einstellungen im Interface-Builder geändert (daher werden sowohl Autolayout- als auch Größenklassen überprüft.) ). 

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell? {
    let cell:TodoItemCell = tableView.dequeueReusableCellWithIdentifier("TodoItemCell", forIndexPath: indexPath) as TodoItemCell
    let row = indexPath.row
    cell.titleLabel.text  = self.todoItems![row].title
    self.callback!(row)
    // Configure the cell...

    return cell
}

Was mache ich falsch?

39
Emwee

Ich bin nicht sicher, wie sehr dies hilft, aber ich sehe den gleichen Fehler, wenn ich versuche, eine Zelle direkt in einer UIView und nicht in einer Tabelle zu platzieren. Dies funktionierte gut mit Xcode 5, also vermute ich, dass es einen Fehler mit XCode6/ios8 gibt. In der Zwischenzeit debuggen Sie in diese Methode und schauen Sie sich Ihre tableView an. Stellen Sie sicher, dass sich tatsächlich eine Instanz der Zelle befindet, die Sie abrufen möchten.

Update: Ich habe einen Fehlerbericht bei Apple eingereicht und ich kann bestätigen, dass es sich um ein IOS8-Problem handelt. Ab Beta-5 ist es leider immer noch da, hoffentlich wird es vor der endgültigen Veröffentlichung behoben.

54
pbuchheit

Dies istNICHTein Fehler. Sie können einfach keine UIView als Zelle für die Tabellensicht verwenden. Sie müssen sicherstellen, dass die oberste Ansicht in der Nib-Datei eine UITableViewCell ist.

31
neevek

In meinem Fall habe ich eine Nib-Datei mit einer UITableViewCell geladen, die in einer UIView enthalten ist. Nach dem Deaktivieren von Autolayout in der Nib-Datei habe ich keine Ausnahme mehr.

13
Jose Servet

Ich bin auch auf dieses Problem gestoßen und es lag an einer UITableViewCell-Unterklasse, die in der Ansichtshierarchie außerhalb einer UITableView verwendet wurde, wie in den anderen Antworten angegeben. In diesem Fall hatte ich eine begrenzte Zeit, sodass ich die in dieser Unterklasse vorhandene Funktionalität nicht in eine UIView-Unterklasse verschieben konnte. Die Problemumgehung, die ich bekam, bestand darin, einfach eine UIView-Instanz in meiner Ansichtshierarchie zu erstellen, in der sich die Zelle befinden sollte, und die Ansichtshierarchie der Zelleninstanz in diese hineinzuziehen und die Zelle selbst aus der angezeigten Ansichtshierarchie zu entfernen. Solange ich die Ansichten beibehalten habe, die ich mit den verschiedenen Eigenschaften der Zelleninstanz verbunden habe, funktioniert alles einwandfrei.

Es ist ein bisschen hässlich, aber es wird die Dinge am Laufen halten, bis die Zeit zum Umgestalten verfügbar ist.

8
Charles A.

LEUTE, DAS IS KEIN FEHLER. Wie unten noch nie gesagt:

"Dies ist KEIN Fehler, Sie können eine UIView einfach nicht als Zelle für die Tabellensicht verwenden. Sie müssen sicherstellen, dass die Ansicht der höchsten Ebene in der Nib-Datei eine UITableViewCell ist."

Ich habe es getestet und es funktioniert. 

Sie müssen die Xib-Datei erstellen und die übergeordnete Ansicht löschen. Anschließend ziehen Sie eine UITableViewCell in die Spitze. Auf diese Weise wird dieses Problem nicht auftreten.

 Note that the top level object in the Xib is a UITableViewCell not a UIView

4
Daniel Molina

In meinem Fall habe ich eine UITableViewCell in einer UIView verwendet, um eine benutzerdefinierte Zelle zu erstellen  enter image description here

dann löschte ich die Zelle aus der UIView und fügte dann den gesamten Inhalt der UIView direkt hinzu und löste mein Problem.  enter image description here

Ich hoffe es hilft dir auch. Alles Gute

3
Kunal Gupta

Durch das Deaktivieren der Option "Auto-Layout verwenden" in den Eigenschaften der .xib wurde das Problem behoben. - Zu veröffentlichen, was ich getan habe, kann anderen helfen. 

Vielen Dank.

3
ashNair

In meinem Fall hatte ich die Zelle kopiert und eingefügt, es fehlten jedoch Einschränkungen, die zu diesem Fehler führten. Wenn Sie die Zelle in eine andere Xib-Datei kopieren, stellen Sie sicher, dass die Einschränkungen ebenfalls kopiert werden oder neu erstellt werden

2
Harsha

In meinem Fall war das übergeordnete UITableViewCell-Element die Hauptansicht anstelle der UITableView. In diesem Fall müssen Sie die Zelle nur in die Tabellenansicht einfügen. 

Ich denke, dies könnte ein häufiges Problem sein, wenn Sie die Zelle in die Ansicht ziehen, ohne sich um die richtige Hierarchie zu kümmern.

0
crubio