gpt4 book ai didi

ios - 如何访问 View Controller 的实例?

转载 作者:行者123 更新时间:2023-11-29 03:23:58 25 4
gpt4 key购买 nike

我的问题是:

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

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

最佳答案

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

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

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

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

您在drawRect 中具体做什么。此外, drawRect 是 View 的一种方法,而不是 View Controller 。如果您为 View Controller then 实现了它,它可能根本不会被调用。

关于ios - 如何访问 View Controller 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com