【发布时间】:2012-10-27 04:21:51
【问题描述】:
我是新手,找不到答案。 在我的旧 4.x 应用程序中,我添加了实现我自己的 UIView 的文件,我在其中运行了一些“drawRect:(CGRect)rect”来绘制一些线条。比如……
/// DrawView.h
#import <UIKit/UIKit.h>
@interface DrawView : UIView <UINavigationControllerDelegate> {
...
}
-(void)DoSomething;
@end
然后,在我的视图控制器 .m 文件中,导入 DrawView.h 后,我可以这样做:
self.view = (DrawView *)self.view;
[(DrawView *)self.view DoSomething];
在我的 IOS4 东西中发挥了魅力。现在我尝试了一个使用故事板的 IOS5 应用程序,这个技巧不再有效。
第一行……
self.view = (DrawView *)self.view;
不会崩溃。但我没有在屏幕上看到任何绘画。期待 drawRect 显示一些东西。没有。所以我怀疑任务是否成功,或者某处隐藏了一些东西。
第二行……
[(DrawView *)self.view DoSomething];
返回以下错误:
-[UIView DoSomething]:无法识别的选择器发送到实例 0x87631b0 sharedlibrary apply-load-rules all
节目接收信号SIGABRT
我在某处读到 drawRect(用于绘画)不能直接在视图控制器上运行,并且必须在 UIView 的单独实例化实现上运行。这就是我这样做的原因。但显然我为控制器的 self.view 分配自定义视图的旧技巧不再有效。
你知道怎么做吗?我的意思是,当使用故事板时?
谢谢
【问题讨论】:
-
我认为这可能有效:DrawView *myView = [[[DrawView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease]; [self.view addSubview:myView]; [myView DoSomething];这似乎行得通。如果有更好的方法,请留言。谢谢。
标签: ios5 uiview storyboard self