为什么没有从ViewController调用* drawRect *?

时间:2014-01-25 18:25:24

标签: objective-c ios7 drawrect uipopover

我有一个iPad应用程序(XCode 5,iOS 7,Storyboards和ARC)。我在UIPopover中创建了UIViewController,当我点按一个按钮时,它会正确显示弹出窗口。

现在,我想在那个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 个答案:

答案 0 :(得分:4)

drawRect:是一个UIView方法,而不是UIViewController方法。如果要覆盖它,则必须创建UIView的子类,然后像这样创建它:

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