ios - titel - title tag wordpress




Wie verhindere ich, dass die UITableView-Trennfarbe in UIPopoverController(iOS7) schwarz wird? (3)

Zwei Empfehlungen:
1. Verwenden Sie UITableViewController überhaupt nicht. Das automatisierte Verhalten, das es bietet, kann leicht mit ein paar Aufrufen implementiert werden und es bricht auch die guten OOP Praktiken.
2. Zeigen Sie über die Trennzeichen keine Trennzeichen, sondern fügen UIView in jeder Zelle am unteren Rand eine UIView mit einer Breite gleich der Breite und Höhe der Zelle von 1 Punkt hinzu.

Meine App verwendet einen UITableViewController, der ein Kind von UINavigationController ist. Dies ist der Inhaltsansicht-Controller eines UIPopoverControllers. Ich passe das Aussehen der UITableView des UITableViewController an. Es funktioniert perfekt für iOS 5 und 6, aber es hat ein Problem in iOS7. Die Separatoren der Zellen sind so eingestellt, dass sie weiß sind, und die Tabellenansicht erscheint zunächst mit der korrekten Trennfarbe. Sobald ich jedoch die Tabellenansicht durchgeblättert habe und die Zellen neu geladen wurden (was bedeutet, dass die Funktionen cellForRowAtIndexPath und willDisplayCell aufgerufen werden), sind die Separatoren der neu geladenen Zellen alle schwarz.

Ich passe die Trennfarbe an, indem ich diese Funktion in der viewDidLoad-Funktion des UITableViewControllers aufruft:

self.tableView.separatorColor = [UIColor whiteColor];

Wenn ich die genau gleiche Tabellenansicht an anderer Stelle in der App verwende (nicht in einem UIPopoverController), habe ich dieses Problem nicht.

Soweit ich das beurteilen kann, gibt es nichts in der Dokumentation, das darauf hinweist, dass dies für iOS 7 anders als für 5 oder 6 funktionieren sollte. Vielleicht ist es ein iOS Bug? Jede Hilfe würde sehr geschätzt werden.


viewwillAppear dies in viewwillAppear

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
        self.tableView.separatorColor = [UIColor whiteColor];
    }

hoffe das hilft


Dieser iOS-Bug tritt immer noch in iOS7.0.6 auf. Ich hatte einen Tisch mit schwarzem Hintergrund und weißen Trennlinien. Die Trennlinien wurden in der ersten Ansicht des UIPopover korrekt in Weiß UIPopover , erschienen jedoch auf der zweiten und den nachfolgenden Anzeigen des gleichen Popover schwarz.

Die Verwendung von reloadData für die Tabellenansicht hat nicht geholfen.

Die einzige praktische Problemumgehung, die ich finden konnte, war die folgende, die bewirkt, dass die gesamte Tabelle neu gezeichnet wird:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
}
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
}

Anmerkungen

1) Wenn Sie nur den viewWillAppear Code verwenden, werden die Trennlinien für einen Augenblick korrekt viewWillAppear , bevor sie wieder schwarz werden. Wenn Sie nur den viewDidAppear Code verwenden, tritt eine merkliche Verzögerung auf, bevor die Trennlinien weiß werden, nachdem das Popover angezeigt wurde. Die Verwendung von BOTH bietet das visuell am besten nahtlose Ergebnis für den Benutzer.

2) Wenn Ihre Tabelle mehr als einen Abschnitt enthält, sollten Sie sicherstellen, dass alle Abschnitte neu geladen werden, da der Benutzer möglicherweise zu einem anderen Abschnitt gescrollt hat, bevor das Popover ausgeblendet wurde.

PS - Nach weiteren Tests stellte ich fest, dass selbst diese Lösung nicht perfekt ist. Wenn Sie nach der Neuanzeige in der Tabelle einen Bildlauf durchführen, werden Trennzeichen, die ursprünglich nicht auf dem Bildschirm angezeigt wurden, wieder zu schwarz. Daher funktioniert es nur korrekt, wenn die Tabelle nicht genügend Zeilen hat, um die Größe des Popover zu überschreiten.





uipopovercontroller