2008-11-29 2 views
5

У меня проблема с перерисовкой пользовательского представления в простом приложении для какао. Рисование основано на одном параметре, который изменяется простым NSSlider. Однако, несмотря на то, что я реализую методы -setParameter: и -parameter и связывает значение ползунка с этим параметром в построителе интерфейсов, я не могу заставить пользовательский вид перерисовывать себя.setNeedsDisplay не работает?

код, который делает перерисовки, как это:

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

Я получаю сообщение об установке нового параметра хотя мнение не перерисовывает себя. Любые идеи приветствуются!

ответ

5

Обычный синтаксис: [self setNeedsDisplay:YES], хотя я бы предположил, что это означает то же самое. Вы внедряете метод - (void)drawRect:(NSRect)rect или используете метод drawRect: вашего суперкласса?

+0

спасибо за указание опечатка с истинным/YES я реализую свой собственный DrawRect: метод – Eimantas 2008-11-29 08:28:15

+0

, если положить NSLog (@ «привет») в верхней части DrawRect: метод, это дозвонились? – 2008-11-29 08:41:11

1

Для тех, у кого есть эта проблема при использовании подкласса NSOpenGLView, вы можете забыть использовать [[self openGLContext] flushBuffer] в конце drawRect:.

2

Иногда причина может быть очень простой: у владельца файла нет связи с объектом UIView. то есть его выход не настроен должным образом. Используйте кнопку IB, ctrl и метод перетаскивания:

Смежные вопросы