голубчик какао программистами,NSView не Проведем через bezierpath
То, что я хотел бы выполнить:
У меня есть флажок, а PopUpButton (который скрыт) и NSView на мой холст. Если myCheckbox установлен -> показать popUpButton и нарисовать строку через bezierPath в NSView. если myCheckbox разнуздана -> Скрыть PopUpButton снова и "раздвигать" путь
Код:
- (IBAction)isChecked:(id)sender {
//if myChekcbox is checked, show the pop up button
if ([sender state]==NSOnState) {
NSLog(@"Checked");
[myPopUp setHidden:NO];
}
else
{
//if the checkbox is unchecked, hide the popupbutton
[myPopUp setHidden:YES];
NSLog(@"Unchecked");
}
//reload my drawrect method (reload the view)
[self setNeedsDisplay:YES];
}
- (void)drawRect:(NSRect)dirtyRect
{
//if the checkedbutton is checked, draw the line
if ([myCheckbox state]==NSOnState)
{
NSBezierPath *myPath = [NSBezierPath bezierPath];
[myPath moveToPoint:NSMakePoint(10, 20)];
[myPath lineToPoint:NSMakePoint(50, 20)];
[myPath setLineWidth:2];
[myPath stroke];
}
}
Проблема:
если проверяется состояние = NSOnState PopUpButton является видимо, но линия просто не будет рисовать, и мне интересно, почему ... Я лично считаю, что это проблема связи.
Я загрузил файл проекта (это довольно мало-35Kb) здесь: Drawing.zip
Глобально: Я прочитал документацию NSView и говорит есть только один способ привлечь к виду, и это через метод drawRect. Это правда? Кроме того, это способ спуска на вид? (Если функция в представлении и setNeedsDisplay: YES в методе)
спасибо заранее, Бен
Обнаруженные проблемы: это проблема соединения и самостоятельно setNeedsDisplay: ДА должно быть: MyView setNeedsDisplay: ДА Довольно глупо! спасибо за помощь tho –