2008-11-29 7 views
5

Tengo un problema para volver a dibujar una vista personalizada en la aplicación de cacao simple. El dibujo se basa en un parámetro que está siendo modificado por un simple NSSlider. Sin embargo, aunque implemente los métodos -setParameter: y -parameter y enlace el valor del control deslizante a ese parámetro en el constructor de interfaces, no puedo hacer una vista personalizada para volver a dibujar.setNeedsDisplay no funciona?

El código que hace volver a dibujar es como esto:

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

me hace llegar el mensaje acerca de la configuración del nuevo parámetro, aunque la vista no redibuja en sí. ¡Cualquier idea es bienvenida!

Respuesta

5

La sintaxis habitual es: [self setNeedsDisplay:YES], aunque supongo que eso significa lo mismo. ¿Está implementando el método - (void)drawRect:(NSRect)rect, o utilizando el método drawRect: de su superclase?

+0

gracias por señalar errata con verdadera/sí implemento mi propia drawRect: Método – Eimantas

+0

si se pone un NSLog (@ "Hola") en la parte superior de su drawRect: método, ¿Consigue llaman? –

+0

no, no se llama. se llama solo una vez al iniciar el programa – Eimantas

1

Para cualquier persona que tenga este problema al usar una subclase NSOpenGLView, es posible que se le olvide usar [[self openGLContext] flushBuffer] al final de drawRect:.

2

Algunas veces, el motivo puede ser muy simple: el propietario del archivo no tiene conexión con el objeto UIView. es decir, Outlet no está configurado correctamente. Usar IB, botón ctrl y método de arrastre :)

+1

Este es un muy buen consejo. De hecho, mi vista NO está conectada ahora, aunque estoy seguro de que mi vista se conectó correctamente una vez. Ahora tengo el problema de que no puedo conectar la vista con el propietario del archivo. Me parece que algo está roto. –