我有一个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
有一个断点,所以我知道它没有被调用。
我做错了什么?
答案 0 :(得分:4)
drawRect:
是一个UIView方法,而不是UIViewController方法。如果要覆盖它,则必须创建UIView的子类,然后像这样创建它:
MyUIViewSubclass *popoverView = [[MyUIViewSubclass alloc] initWithFrame:CGRectMake(0, 0, 650, 416)];