• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

setNeedsDisplay hat keine Auswirkung

zottel

James Grieve
Registriert
11.07.08
Beiträge
133
Hallo,

ich mache gerade einige Vortests für eine Applikation, die ich schreiben möchte.

Ich habe eine View, die irgendwann mal String-Arrays ausgeben soll, die vom zugehörigen Controller gesetzt werden. Momentan habe ich nur einen einzigen String.

drawRect: enthält die Anweisungen, um den String auszugeben. Ist der String noch nicht gesetzt, wird ein Dummy-String ausgegeben. Die Ausgabe des Dummy-Strings beim Starten der Applikation funktioniert.

Nun setze vom Controller aus den String auf einen neuen Wert und rufe dann [view setNeedsDisplay]; auf. Das führt aber seltsamerweise nicht dazu, dass drawRect: aufgerufen wird. Ich habe einen Breakpoint in drawRect:, der wird am Anfang beim ersten Darstellen des Fensters erreicht, und dann nie wieder, obwohl ich setNeedsDisplay an die View schicke. Was mache ich falsch?

Viele Grüße,

Christian
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
So:

Code:
[view setNeedsDisplay:YES];


Doku hilft. ;)
 

zottel

James Grieve
Registriert
11.07.08
Beiträge
133
Nein, setNeedsDisplay war schon richtig – es ging um UIView, nicht NSView; hätte ich dazusagen sollen, sorry.

Das Problem war, dass ich im interface view neu definiert habe, damit es meine View-Klasse statt UIView hat. Damit habe ich dann letztlich die falsche (= eine nicht vorhandene) View angesprochen, auch wenn ich nicht ganz verstehe warum.

Lasse ich view aber wie es ist, bekomme ich ein Warning, wenn ich Methoden aufrufen will, die nicht in UIView definiert sind, sondern nur in meiner eigenen Klasse. Ich verbinde meine View-Klasse nicht direkt in eigenem Code, sondern im Interface-Builder. Wie kriege ich die Warnings wieder los?

Genauere Beschreibung: Es gibt die Klasse testViewController, dazu testViewController.xib. In testViewController.xib ist File's Owner von der Klasse testViewController, das Outlet view von File's Owner ist mit der View im xib verbunden, die ihrerseits von der Klasse testView (= mein erweiterter Erbe von UIView) ist.

Funktioniert grundsätzlich alles, jetzt, aber ich bekomme halt das Warning „'UIView' may not respond to -setDisplayString“.

Und gleich noch die nächste Frage: Warum funktioniert [self.view setNeedsDisplay];, [view setNeedsDisplay]; aber nicht?

Danke,

Christian