gpt4 book ai didi

ios - 从 subview 更新主视图上的 IBOutlet

转载 作者:行者123 更新时间:2023-11-28 17:38:33 25 4
gpt4 key购买 nike

我有一个主视图,上面有一个 UISlider。

我在主视图中添加了一个 subview :

gameView *myViewController = [[gameView alloc] initWithNibName:@"gameView" bundle:nil];
[self.view addSubview:myViewController.view];

subview 创建在主视图之上。

当我删除 subview 时使用:

[self.view removeFromSuperview];

下面的主视图变得可见。

我希望能够在调用 [self.view removeFromSuperview] 之前从 subview 更新主视图上的 UISlider 的值

这可能吗?

基本上这个问题可以概括为如何从 subview 更新主视图上的 IBOutlet。

非常感谢您的帮助。非常感谢!

最佳答案

是的,这是可能的。

有几种方法可以做到这一点。以下是我的做法:

首先,让你的父 View Controller 的 UISlider 成为一个可以被其他对象访问的属性。

其次,为您的 gameView 对象提供一个实例变量,您将链接到父 View (我们称它为 id savedParent;)

然后,在执行 removeFromSuperview 之前,您可以简单地执行以下操作:

ParentViewController * parentVC = (ParentViewController *) savedParent;
if(parentVC)
{
// some float value of whatever you want to set the slider value to
parentVC.slider.value = 0.5f;
}

此外,如果您只是想添加一个 subview ,为什么要实例化整个 View Controller 对象 (gameView)?当您执行 removeFromSubview 调用时, View 将被删除,但您的 gameView View Controller 不会被释放(甚至可能会丢失并泄漏到内存中,从而导致崩溃).如果你想做一个 subview ,继承UIView。如果您想推送一个新的 View Controller ,请推送整个 Controller (而不仅仅是它包含的 View )。

关于ios - 从 subview 更新主视图上的 IBOutlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053228/

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