2014-01-25 5 views
0

У меня есть приложение для iPad (XCode 5, iOS 7, Storyboards и ARC). У меня есть UIPopover, созданный в UIViewController, и когда я нажимаю кнопку, он правильно отображает popover.Почему * drawRect * не вызывается из ViewController?

Теперь я хочу нарисовать сетку в этом popover; Я знаю, что мне нужно добавить код в drawRect, сделайте рисунок, и сделайте setNeedsDisplay, чтобы получить чертеж. Однако это не работает!

Мой вопрос: почему drawRect не звонит, когда от [popoverView setNeedsDisplay];? Оба метода находятся в одном классе UIViewController.

Вот код, который должен вызвать drawRect

// create popover 
UIViewController* popoverContent = [[UIViewController alloc] init]; 
UIView *popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 650, 416)]; 
popoverView.backgroundColor = [UIColor whiteColor]; 
popoverContent.preferredContentSize = CGSizeMake(650.0, 416.0); 

// draw the lines, etc on the popoverContent 
[popoverView setNeedsDisplay]; 

// create the popover controller and attach the popover content to it 
popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent]; 
popoverController.delegate = (id)self; 
[popoverController setPopoverContentSize:CGSizeMake(650, 416) animated:NO]; 
[popoverController presentPopoverFromRect:CGRectMake(650, 416, 10, 50) inView: obViewOpenAppts 
       permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 

У меня есть контрольные точки в drawRect, так что я знаю, что это не называется.

Что я делаю неправильно?

+1

Я вижу вас создания popoverView, но я не вижу, что вы установить его как вид на что-нибудь. – Abizern

ответ

4

drawRect: - метод UIView, а не метод UIViewController. Если вы хотите изменить его, вы должны создать подкласс UIView, а затем создать его так:

MyUIViewSubclass *popoverView = [[MyUIViewSubclass alloc] initWithFrame:CGRectMake(0, 0, 650, 416)]; 
+1

Правильно, и он вызывает реализацию по умолчанию, которую вы не переопределяете. Вы только что сделали метод в UIViewController с именем drawRect :. Вы не переопределили '[UIView -drawRect:]', потому что UIView не UIViewController. –

+1

Правильно ... Я только что увидел ... это медленное утро ...: D – SpokaneDude

+0

У всех нас есть :) –

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