【问题标题】:Upgrading code to IOS5 Storyboard... self.view assignments not working将代码升级到 IOS5 Storyboard... self.view assignments 不工作
【发布时间】: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


【解决方案1】:

我没有看到任何其他选项。所以我会发布这个作为答案。如果您知道,请随时发表评论或发布更好的替代方案......

DrawView *myView = [[[DrawView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease]; 
[self.view addSubview:myView]; 
[myView DoSomething];

在我的例子中,我实际上在 .h 文件中声明了 *myView,然后合成它,删除了“autorelease”,并释放了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2019-03-05
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多