我的问题是:
我创建了一个项目对象。在这个项目对象中,我需要在 ViewController 中调用一个方法。
我需要调用的方法使用修改后的 ViewController 主视图绘制一些对象 -
(void)drawRect:(CGRect)rect
方法。
我唯一需要做的就是在方法中的 ViewController 的实际实例(应用程序启动时创建的实例)上调用此方法项目类。
创建的方法(绘制对象)有效。我通过从 ViewController 的ViewDidLoad
方法调用它来测试它。在项目方法中,我试过这个代码:
-(void)drawProject {
UIStoryboard *mainStoryboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];
IYViewController *projectViewController = [[IYViewController alloc] init];
projectViewController = (IYViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"project"];
[projectViewController drawProject];
}
我在界面构建器中命名了主体,目标 ViewController “项目”。
问题是,无论如何,我创建的 ViewController 实例不是 IYViewController 的实例,即在运行时显示。
我没有找到适合我的真正好的解决方案,所以请帮忙!也许解决方案是创建一个类的委托,但我真的不明白,所以如果这是正确的解决方案帮我编码吧!
答案 0 :(得分:1)
是的,您分配的实例和init不是您从storybaoard加载的实例。无需分配和初始化它。如果您没有ARC,那么您甚至在那里创建了内存泄漏。
-(void)drawProject {
UIStoryboard *mainStoryboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];
IYViewController *projectViewController;
projectViewController = (IYViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"project"];
[projectViewController drawProject];
}
嗯,这不会解决问题。 (如果评论格式正确,那么我添加了评论而不是答案)。你真正的问题是在其他地方,我担心你可能还不知道如何解释它,以便我们理解它。 试试看。更详细地解释一下。
你确定你的drawProject真的被执行了吗?哪个类属于我们正在查看的drawProject方法?
你到底在drawRect
做了什么?
此外,drawRect是视图的方法,而不是视图控制器。如果您为视图控制器then
实现了它,则可能根本不会调用它。