ios:创建自己的视图

时间:2011-03-14 16:24:51

标签: iphone ios ipad uiview view

我只是开始开发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出现了。

2 个答案:

答案 0 :(得分:0)

如果没有调用drawRect:,那么您实际上并不在屏幕上,或者您为drawRect:添加了错误的签名。正确的签名是:

- (void)drawRect:(CGRect)rect

要确保您实际上在屏幕上,请尝试重载awakeFromNib并在其中放置断点。如果您不是,那么您尚未在界面构建器中正确配置它。最常见的问题是无法为视图设置正确的类(应将其设置为MyView),或将其放入未实际加载的NIB中。

当然,请确保您实际上是UIView的子类,您没有来自编译器或Interface Builder的任何警告,并且在您运行时没有消息打印到控制台。 / p>

答案 1 :(得分:0)

由于您没有发布代码,这是一个疯狂的猜测,但您需要重新渲染视图:

[myViewInstance setNeedsDisplay:YES];

此外,请确保视图实际已加载。您可以在nib唤醒方法(-[<NSNibAwaking> awakeFromNib])中使用一点NSLog来检查这一点。