Wenn UITableViewCell das Reorder-Steuerelement zeigt, fügt es seinem leeren Array von Subviews außerdem eine leere, 1 Pixel breite weiße UIView hinzu.
Bluntly: das ist ein Fehler, den Apple beheben sollte.
Sie können jedoch umgehen, indem Sie diese nervende Ansicht jedes Mal finden, wenn sie erscheint, und ihre Hintergrundfarbe auf transparent einstellen. Quick tip: Die störende weiße Ansicht ist immer die letzte im Subview-Array der UITableViewCell und ist immer 1 Pixel breit. Wir werden dies benutzen, um es zu finden.
Wenn Sie die Bearbeitung für die Tabelle aktivieren, machen Sie alle sichtbaren, störenden 1-Pixel-Ansichten transparent. So ist die Aktion-Methode, die „Bearbeiten“ -Modus auf dem Tisch schaltet könnte wie folgt aussehen:
- (IBAction)edit:(id)sender
{
[tableView setEditing:!tableView.editing animated:YES];
for (UITableViewCell *cell in [tableView visibleCells])
{
if (((UIView *)[cell.subviews lastObject]).frame.size.width == 1.0)
{
((UIView *)[cell.subviews lastObject]).backgroundColor =
[UIColor clearColor];
}
}
}
und hält so für alle neue Ansichten zu tun, wie sie durch die Implementierung dieses in Ihrem UITableViewDelegate sichtbar werden:
- (void)tableView:(UITableView *)tableView
willDisplayCell:(UITableViewCell *)cell]
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (((UIView *)[cell.subviews lastObject]).frame.size.width == 1.0)
{
((UIView *)[cell.subviews lastObject]).backgroundColor =
[UIColor clearColor];
}
}
Dieser Hack, um das Problem zu beheben, ist ziemlich harmlos und wenn Apple den Bug in Zukunft behebt (aufhören, die lästige 1-Pixel-Ansicht hinzuzufügen), sollte dieser Code ruhig aufhören, irgendetwas zu tun.
Das funktioniert wie ein Charme. Danke, Matt. Ich stimme zu, dass dies kein wünschenswertes Verhalten ist, deshalb werde ich einen Fehler bei Apple einreichen. –
Wenn Sie dies in Xcode 3.2.4 und iOS SDK 4.1 versuchen, ist das Objekt das zweitletzte, nicht das letzte Element. Das hat nicht funktioniert. – chrish