2008-11-29 7 views
5

Mam problem z przerysowaniem niestandardowego widoku w prostej aplikacji kakao. Rysunek opiera się na jednym parametrze, który jest zmieniany przez prosty NSSlider. Jednakże, mimo że zaimplementowałem metodę -setParameter: i -parametr i powiązanie wartości suwaka z tym parametrem w konstruktorze interfejsów, nie mogę stworzyć niestandardowego widoku, aby samemu przerysować.setNeedsDisplay nie działa?

Kod, który robi przerysowanie wynosi tak:

- (void)setParameter:(int)newParameter { 
    parameter = newParamter; 
    NSLog(@"Updated parameter: %d", parameter); 
    [self setNeedsDisplay:YES]; 
} 

ZROBIĆ pojawia się komunikat o ustawieniu nowego parametru chociaż widok nie przerysować się. Wszelkie pomysły są mile widziane!

Odpowiedz

5

Zwykła składnia to: [self setNeedsDisplay:YES], chociaż przypuszczam, że oznacza to samo. Czy wdrażasz metodę - (void)drawRect:(NSRect)rect, czy używasz metody swojej nadklasy?

+0

dzięki za wskazanie literówkę z prawdą/TAK zaimplementować własną drawRect: metoda – Eimantas

+0

jeśli położyć NSLog (@ „hi”) na górze drawRect: metoda, to się nazywa? –

+0

nie, nie zostanie wywołany. zostaje wywołany tylko jeden raz podczas uruchamiania programu – Eimantas

1

Dla każdego, kto ma ten problem podczas korzystania z podklasy NSOpenGLView, możesz zapomnieć użyć [[self openGLContext] flushBuffer] pod koniec .

2

Czasami powód może być bardzo prosty: Właściciel pliku nie ma połączenia z obiektem UIView. to znaczy, że punkt sprzedaży nie jest prawidłowo skonfigurowany. Użyj IB, przycisku Ctrl i metody przeciągnij :)

+1

To bardzo dobra wskazówka. W rzeczywistości mój widok NIE jest teraz połączony, chociaż jestem pewny, że mój widok był poprawnie podłączony raz. Teraz mam problem, że nie mogę połączyć widoku z właścicielem pliku. Wygląda mi na to, że coś jest zepsute. –

Powiązane problemy