Iphone UIScrollView对象通过引用传递,未返回
我有一个场景,我有:Iphone UIScrollView对象通过引用传递,未返回,iphone,ios,uikit,uiscrollview,pass-by-reference,Iphone,Ios,Uikit,Uiscrollview,Pass By Reference,我有一个场景,我有: 带有UIViewController(mainVC)和包含UIScrollView(scrollView)的UIView(mainView)的UINavigationController mainView中的一个全屏按钮,点击该按钮后会推送一个新的UIViewController(fullScreenVC),其中scrollView对象通过引用传递给它(存储时带有属性属性nonatomic和assign)。fullScreenVC正确显示scrollView对象 关闭fu
- 带有UIViewController(mainVC)和包含UIScrollView(scrollView)的UIView(mainView)的UINavigationController
- mainView中的一个全屏按钮,点击该按钮后会推送一个新的UIViewController(fullScreenVC),其中scrollView对象通过引用传递给它(存储时带有属性属性nonatomic和assign)。fullScreenVC正确显示scrollView对象
- 关闭fullScreenVC后,会向mainVC发送一个NSVC通知。问题就在这里
解决此问题的唯一方法是在通知步骤中将scrollView添加回mainVC。在发送UIScrollView对象(或更一般的UIKit对象)时,我是否需要做一些特殊的事情?还是我在什么地方做了什么蠢事?没有间接参考。在Objective-C中,我们有指向对象的指针,这些指针被分配和传递(而不是对象本身) 无论如何,这在这里是不相关的。您的问题是,在UIKit中,一个视图只能有一个superview(它是一个树层次结构)。将一个视图作为子视图添加到另一个视图时,它将自动从其以前的超级视图(如果有)中删除。请参阅addSubview的文档:此处::
您真的需要在两个不同的屏幕上显示相同的滚动视图吗?这似乎有点奇怪。您应该有两个不同的滚动视图;或者,您可以确保在处理完另一个视图后将其添加回“主视图”。啊,一个视图只能有一个superview是有道理的。我之所以在两个不同的屏幕中使用滚动,是因为在滚动视图中添加项目需要相当多的设置,我认为必须重新创建它是一种浪费。完成后,我将其添加回主视图。我认为通过引用传递和通过指针传递是一样的(与通过值传递相反,对象是通过值传递的)?也许这只是C/C++术语。