Sie sollten alle Untersichten der benutzerdefinierten Zelle der Ansicht nicht der Zelle, sondern dem contentView
der Zelle hinzufügen.
Wenn Sie die benutzerdefinierte Zelle mit dem Interface Builder erstellen, können Sie contentView
der benutzerdefinierten Zelle im Interface Builder einfach finden. Andernfalls, wenn Sie ohne Interface Builder arbeiten, überprüfen Sie UITableViewCell, die contentView
-Eigenschaft hat.
BEARBEITEN: FYI, überprüfen Sie den folgenden Kommentar in UITableViewCell.
%Vor%Ich habe diesen Fehler in Xcode 4.5 gesehen. IB verband automatische Layout-Einschränkungen mit der Zelle, nicht mit der contentView der Zelle. In Xcode 5 ist dieses Problem verschwunden. Sie müssen nur Connect-Constraints neu erstellen, wenn sie zuvor in Xcode 4.5 erstellt wurden.
Wenn Sie das Autolayout in DeleteUserCell.xib verwenden
Sehen Sie sich Ihre Einschränkungen an und versuchen Sie einen Editor- & gt; Zurücksetzen auf die vorgeschlagenen Einschränkungen in der Tabellenansichtszelle.
Versuchen Sie, den Rahmen der Zelle anzupassen, um zu sehen, wie die Zelle im Bearbeitungsmodus aussehen wird.
Wenn Sie in DeleteUserCell.xib nicht das automatische Layout verwenden
Sehen Sie sich Ihre Autorisierungsmasken für Ihre Unteransichten an. Stellen Sie sicher, dass sie ihre Frames korrekt anpassen, wenn sich ihre Superansicht ändert.
Es gibt einige Dinge, die Sie tun können, um es zu beheben, je nachdem, wie Ihr Code strukturiert ist. Es ist mir nicht klar, aus dem Code-Snippet, wie die benutzerdefinierte Nib-Datei für die Zelle verwendet wird.
Stellen Sie zunächst sicher, dass die Bilder in Ihrer benutzerdefinierten Zelle nicht als Teil der Zubehöransicht enthalten sind. Weitere Informationen zum Erstellen benutzerdefinierter Tabellenansichtszellen finden Sie im folgenden Link .
Zweitens stellen Sie sicher, dass die UIView für Ihre benutzerdefinierte TableCell die gleiche Größe wie die Inhaltsgröße der Tabellenansicht im Bearbeitungsmodus hat. Möglicherweise müssen Sie das Bild neu positionieren, wenn Sie auf Bearbeiten tippen. Mit der folgenden Methode können Sie überprüfen, wann die Bearbeitung erfolgt ist:
Das heißt, ich würde jedoch so weit wie möglich davon absehen, die Objekte innerhalb einer Zelle neu zu positionieren. Wenn die Zelle mit autoLayout korrekt erstellt wurde und ohne den Bearbeitungsmodus angezeigt wird, passt sie sich automatisch im Bearbeitungsmodus an. Hier ist ein Link , um mehr über das automatische Layout zu lesen.
Eine weitere nützliche Möglichkeit zur Behebung dieses Problems besteht in der Behandlung dieser Ereignisse:
%Vor%und legen Sie die entsprechenden Rahmen für die entsprechenden Steuerelemente fest.
Ich hoffe, es hilft!
Der folgende Code wird aufgerufen, wenn der Benutzer eine Zelle wischt
So können Sie Ihren Zelleninhalt wie folgt konfigurieren
Das hilft vielleicht nicht beim eigentlichen Problem, aber ich habe ein paar Probleme mit Ihrem Code entdeckt.
Zuerst das:
%Vor%Gibt immer denselben Wert zurück? Du könntest genauso gut haben:
%Vor%Zweitens haben Sie:
%Vor%Sie erstellen ein DeleteUserCell-Objekt, sondern werfen es dann als BlackedUserCell-Objekt aus?
Wie bei Ihrer eigentlichen Frage müssen Sie beim Aufrufen des Bearbeitungsmodus Ihre Subviews manuell verschieben, um sie zu kompensieren. Alternativ können Sie Auto-Layout verwenden, die dies für Sie tun sollte, aber es ist ein wenig mehr Arbeit. Es gibt viele Auto-Layout-Tutorials hier und im Internet. Hier sind ein paar, um Sie zu beginnen:
Dies hat eine Reihe von Anleitungen, einschließlich einer, wenn Sie XIBs verwenden, wie Sie es tun.
Tags und Links objective-c iphone ios xcode5 ios7