1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

setNeedsDisplay hat keine Auswirkung

Dieses Thema im Forum "OS X-Developer" wurde erstellt von zottel, 04.10.08.

  1. zottel

    zottel James Grieve

    Dabei seit:
    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
     
  2. Nighthawk

    Nighthawk Linsenhofener Sämling

    Dabei seit:
    16.12.06
    Beiträge:
    2.558
    So:

    Code:
    [view setNeedsDisplay:YES];

    Doku hilft. ;)
     
  3. zottel

    zottel James Grieve

    Dabei seit:
    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
     

Diese Seite empfehlen