2012-06-29 6 views
0

Я пытаюсь настроить метод во внешнем классе, который выглядит следующим образом:Вызов метод рисования внешних по отношению к ViewController

myClass.m

- (void)drawSomeStuffInContext:(CGContextRef)context atStartingPoint:(CGPoint *)coords 
{ 
    //draw some stuff (ignoring coords for now) 
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); 
    CGContextSetLineWidth(context, 1.0f); 
    CGContextMoveToPoint(context, 10, 10); 
    CGContextAddLineToPoint(context, 100, 50); 
    CGContextStrokePath(context); 
} 

viewController.m

- (void)viewDidLoad 
{ 
    CGContextRef currentContext = UIGraphicsGetCurrentContext(); 
    CGPoint startCoords = CGPointMake(100.0, 100.0); 
    [[myClass alloc] drawSomeStuffInContext:currentContext atStartingPoint:startCoords]; 
} 

Проект строится и работает, но я получаю следующие ошибки в журнале: ничего не нарисовано:

[...] <Error>: CGContextSetStrokeColorWithColor: invalid context 0x0 
[...] <Error>: CGContextSetLineWidth: invalid context 0x0 
[...] <Error>: CGContextMoveToPoint: invalid context 0x0 
[...] <Error>: CGContextAddLineToPoint: invalid context 0x0 
[...] <Error>: CGContextDrawPath: invalid context 0x0 

Я искал веб-сайт для аналогичного вопроса/примера без везения. Существуют ли другие/дополнительные параметры, которые требуются? Должен ли я называть метод draw from from viewDidLoad? Совет очень ценится!

ответ

1

drawRect не вызывается (насколько я могу судить) это означает, что представление вообще не нарисовано. Вы должны называть что-то вроде [super initWithFrame:frame];, где frame - это CGRect (очевидно) в методе drawSomeStuffInContext.

Альтернатива, которую вы могли бы назвать [[myClass alloc] initWithFrame: frame]; в методе viewDidLoad viewController.m и сохранить начальную точку в глобальной переменной.

+0

'myClass' в настоящее время подклассифицирован как NSObject, который возвращает несколько вычислений для меня. Должен ли я перемещать 'drawSomeStuffInContext' в другой класс подклассами из' UIView'? Кажется, у меня что-то не хватает в отношении реализации 'drawRect' с моей текущей настройкой. Большое спасибо за ваш ответ! – Jesse

+1

Если вы хотите нарисовать что-нибудь на экране, тогда класс должен быть UIView подкласса. Поэтому вы можете просто сделать класс подклассом UIView – prince

+0

. Я закончил тем, что перевел все на 'drawRect', который сделал трюк. Полагаю, я мог бы также вызвать свой метод из 'drawRect'. – Jesse

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

  • Нет связанных вопросов^_^