setNeedsDisplay не работает? - PullRequest
       20

setNeedsDisplay не работает?

5 голосов
/ 29 ноября 2008

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

Код, который выполняет перерисовку, выглядит следующим образом:

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

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

Ответы [ 4 ]

5 голосов
/ 29 ноября 2008

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

2 голосов
/ 17 мая 2011

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

2 голосов
/ 08 декабря 2009

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

0 голосов
/ 22 февраля 2013

В iOS 6 нет такой функции для вызова: setNeedsDisplay:YES. У меня та же проблема, и пришел с этим решением: https://stackoverflow.com/a/15027374/1280800.

Надеюсь, это поможет.

...