gpt4 book ai didi

iphone - UIScrollView 对象通过引用传递,不被返回

转载 作者:行者123 更新时间:2023-11-29 05:04:39 25 4
gpt4 key购买 nike

我有一个场景:

  • 一个 UINavigationController 和一个 UIViewController (mainVC),以及一个包含 UIScrollView (scrollView) 的 UIView (mainView)
  • mainView 中的全屏按钮,点击它会推送一个新的 UIViewController (fullScreenVC),并通过引用传递 rollView 对象(与属性属性 nonatomic 和 allocate 一起存储)。 fullScreenVC正确显示scrollView对象。
  • 关闭 fullScreenVC 时,会向 mainVC 发送 NSNotification。问题就出在这里...

当 fullScreenVC 被移除时,scrollView 不再显示在 mainVC 中。不过,通过在通知期间在日志上打印出scrollView,我可以看出它仍然存在。

我认为通过引用发送和存储scrollView,mainVC仍然会保留它。我还尝试将scrollView发送回mainVC,以防它被删除,但这没有做任何事情。

解决这个问题的唯一方法是在通知步骤中将scrollView添加回mainVC中。在发送 UIScrollView 对象(或更一般的 UIKit 对象)时,我必须做一些特别的事情吗?还是我在某个地方做了一些愚蠢的事情?

最佳答案

没有传递引用。在 Objective-C 中,我们有指向对象的指针,并且这些指针被分配和传递(而不是对象本身)。

无论如何,这与这里无关。你的问题是,在 UIKit 中,一个 View 只能有一个 super View (它是一个树层次结构)。当您将一个 View 作为 subview 添加到另一个 View 时,它会自动从其上一个 super View (如果有)中删除。请参阅 addSubview 的文档:此处:https://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/addSubview :

你真的需要在两个不同的屏幕上显示相同的 ScrollView 吗?看起来有点奇怪。您应该有两个不同的 ScrollView ;或者,您可以确保在完成另一个 View 后将其添加回您的“mainView”。

关于iphone - UIScrollView 对象通过引用传递,不被返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5891047/

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