我只是开始开发iOS应用程序。所以我想这个问题会很吵。
我正在尝试了解mvc模型在iOS开发中的工作原理。
我想混合可用的视图和我自己的视图(我希望自己使用绘图字符串等基元绘制)
所以
我创建了MyView:UIView类。然后我重写了drawRect方法并添加了一个简单的输出。然后我使用界面构建器将我的类添加到“ipad display”。
问题是DrawRect方法开头的断点永远不会到达。当然,我在模拟器中得到一个黑屏=(
我尝试添加ViewController并在界面构建器中使用它,但实际上我并不需要它,因为我的视图只是绘制一个常量字符串而且都是...
我想我误解了一些非常严重的事情,因为透过苹果的例子对我来说没什么用。
这是我的代码(对不起,忘记了):
MyView.h:
@interface MyView : UIView {
...
}
MyView.m:
...
- (void)drawRect:(CGRect)rect {
NSString *text = @"Hello, world";
UIFont *font = [UIFont systemFontOfSize:10];
[[UIColor blackColor] set];
CGPoint point;
point = CGPointMake(0.5f, 0.5f);
[text drawAtPoint:point withFont:font];
[font release];
}
UPD:
我添加了一个TabBar,只是为了确保问题只出现在我自己的视图中。就是这样:TabBar出现了。
答案 0 :(得分:0)
如果没有调用drawRect:
,那么您实际上并不在屏幕上,或者您为drawRect:
添加了错误的签名。正确的签名是:
- (void)drawRect:(CGRect)rect
要确保您实际上在屏幕上,请尝试重载awakeFromNib
并在其中放置断点。如果您不是,那么您尚未在界面构建器中正确配置它。最常见的问题是无法为视图设置正确的类(应将其设置为MyView),或将其放入未实际加载的NIB中。
当然,请确保您实际上是UIView
的子类,您没有来自编译器或Interface Builder的任何警告,并且在您运行时没有消息打印到控制台。 / p>
答案 1 :(得分:0)
由于您没有发布代码,这是一个疯狂的猜测,但您需要重新渲染视图:
[myViewInstance setNeedsDisplay:YES];
此外,请确保视图实际已加载。您可以在nib唤醒方法(-[<NSNibAwaking> awakeFromNib]
)中使用一点NSLog来检查这一点。