Обновление NSView в функции событий - PullRequest
1 голос
/ 12 января 2011

У меня есть главное представление (подкласс NSView), и, поскольку я новичок в какао, я хотел бы знать, как обновить представление в функции событий.Я знаю, что есть много методов, которые принимают такие события, как -(void)mouseMoved:(NSEvent*)event или - (void)mouseClicked:(NSEvent*)event Мой алгоритм для определения того, что делать, готов.Я хочу знать, где я должен обновить основной вид: это в -(void)mouseMoved:(NSEvent*)event или в - (void)drawRect:(NSRect)dirtyRect.И если он находится в drawRect, то как мне передать ему информацию?

Заранее спасибо!

1 Ответ

3 голосов
/ 12 января 2011

Вот краткое объяснение, которое, мы надеемся, поможет вам на вашем пути:

  • Обработка событий

Пользовательские действия сообщаются вашим представлениям и окнам с помощью событий (клавиатура +мышь) и действия (события, интерпретируемые кнопками и другими элементами управления).Ваши представления должны реагировать на эти события и действия, обновляя модель , которая является структурами данных более низкого уровня, которые представляют все, что ваша программа отображает для пользователя.Если используется Какао, представление обычно связывается через объект controller для внесения изменений в модель .

  • Неправильное отображение / изменение триггера

После того, как вы обновили свою модель, вам нужно сообщить представлению, что она должна быть перерисована.Это можно сделать несколькими способами, но самый простой способ сделать это - -setNeedsDisplay:YES.Это гарантирует, что в какой-то момент в ближайшем будущем ваш вид будет перерисован для отображения обновленных данных модели.

  • Draw

В какой-то момент Cocoa вызовет -drawRect: на ваш взгляд.Внутри -drawRect: вы должны прочитать необходимые данные из вашей модели и нарисовать необходимую графику.Вы не должны делать никаких манипуляций с моделью в этом методе.

...