如何访问视图控制器的实例?

时间:2013-12-21 20:36:03

标签: ios objective-c ipad uiviewcontroller

我的问题是:

我创建了一个项目对象。在这个项目对象中,我需要在 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 的实例,即在运行时显示。

我没有找到适合我的真正好的解决方案,所以请帮忙!也许解决方案是创建一个类的委托,但我真的不明白,所以如果这是正确的解决方案帮我编码吧!

1 个答案:

答案 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实现了它,则可能根本不会调用它。