Was ist die robusteste Methode, um ein UIView zum Neuzeichnen zu zwingen?

Ich habe eine UITableView mit einer Liste von Elementen. Durch Auswahl eines Elements wird ein viewController gedrückt, der dann die folgenden Schritte ausführt. from method viewDidLoad Ich löse eine URLRequest für Daten aus, die für eine meiner Unteransichten erforderlich sind - eine UIView-Unterklasse mit überschriebenem drawRect. Wenn die Daten aus der Cloud eingehen, beginne ich mit dem Aufbau meiner Ansichtshierarchie. Die betreffende Unterklasse erhält die Daten übergeben und die drawRect-Methode verfügt nun über alles, was sie zum Rendern benötigt.

Aber.

Da ich drawRect nicht explizit aufrufe - Cocoa-Touch erledigt das - kann ich Cocoa-Touch nicht mitteilen, dass ich wirklich wirklich möchte, dass diese UIView-Unterklasse gerendert wird. Wann? Jetzt wäre gut!

Ich habe [myView setNeedsDisplay] ausprobiert. Das funktioniert manchmal. Sehr fleckig.

Ich ringe stundenlang damit. Könnte jemand, der mir bitte einen grundsoliden, garantierten Ansatz zum Erzwingen eines erneuten Renderns von UIView bieten?

Hier ist der Codeausschnitt, der der Ansicht Daten zuführt:

// Create the subview
self.chromosomeBlockView = [[[ChromosomeBlockView alloc] initWithFrame:frame] autorelease];

// Set some properties
self.chromosomeBlockView.sequenceString     = self.sequenceString;
self.chromosomeBlockView.nucleotideBases    = self.nucleotideLettersDictionary;

// Insert the view in the view hierarchy
[self.containerView          addSubview:self.chromosomeBlockView];
[self.containerView bringSubviewToFront:self.chromosomeBlockView];

// A vain attempt to convince Cocoa-Touch that this view is worthy of being displayed ;-)
[self.chromosomeBlockView setNeedsDisplay];

Prost, Doug

Antworten auf die Frage(5)

Ihre Antwort auf die Frage