【问题标题】:How can I access an instance of a view controller?如何访问视图控制器的实例?
【发布时间】:2014-01-10 11:26:47
【问题描述】:

我的问题是:

我创建了一个项目对象。在这个项目对象中,我需要在 ViewController 中调用一个方法。

我需要调用的方法使用修改后的 ViewController 主视图中的一些对象 -

(void)drawRect:(CGRect)rect 方法。

我唯一需要做的就是在 ViewController 的实际实例(应用程序启动时创建的实例)上从一个方法调用此方法项目类。

创建的方法(用于绘制对象)有效。我通过 ViewControllerViewDidLoad 方法调用它来测试它。在项目方法中,我尝试了以下代码:

-(void)drawProject {
  UIStoryboard *mainStoryboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];
  IYViewController *projectViewController = [[IYViewController alloc] init];
  projectViewController = (IYViewController *)[mainStoryboard         instantiateViewControllerWithIdentifier:@"project"];
  [projectViewController drawProject];
}

我在界面生成器中将主体命名为ViewController“项目”。

问题是无论如何我创建的 ViewController 实例不是 IYViewController 的实例在运行时显示。

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

【问题讨论】:

    标签: ios objective-c ipad uiviewcontroller


    【解决方案1】:

    是的,您分配和初始化的实例不是您从故事板加载的实例。无需分配和初始化它。如果您不使用 ARC,那么您甚至会在那里创建内存泄漏。

    -(void)drawProject {
      UIStoryboard *mainStoryboard =[UIStoryboard storyboardWithName:@"Main" bundle:nil];
      IYViewController *projectViewController;
      projectViewController = (IYViewController *)[mainStoryboard         instantiateViewControllerWithIdentifier:@"project"];
      [projectViewController drawProject];
    }
    

    好吧,这不会解决问题。 (如果 cmets 可以正确格式化,那么我添加了评论而不是答案)。您真正的问题在其他地方,我担心您可能还不知道如何解释它以便我们理解它。 试一试。解释得更详细一点。

    你确定你的drawProject真的被执行了吗?我们正在查看的 drawProject 方法属于哪个类?

    您在drawRect 中究竟做了什么。 此外,drawRect 是视图的方法,而不是视图控制器。如果您为视图控制器then 实现了它,则可能根本不会调用它。

    【讨论】:

    • 感谢您的快速回答。目前我真的不需要解决我的问题,但是一旦我需要解决它,我会添加更多细节。感谢您的帮助。
    猜你喜欢
    • 2010-11-27
    • 2017-02-18
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多