将UIView的引用传递给下一个UIViewController

时间:2012-05-18 07:23:31

标签: iphone objective-c ios cocoa-touch uiviewcontroller

我有一个应用程序,我试图在导航过渡期间将UIScrollViewUIViewController传递到下一个UIScrollView。我想弄清楚我应该从哪个方法中删除superview中的UIViewController,然后将其附加到新的NSLog

我在第一个viewDiDisappear的{​​{1}} / viewWillDisappear方法和第二个UIViewController / viewDidAppear方法中执行了viewWillAppear UIViewController这就是我的订单:

viewWillDisappear
viewWillAppear
viewDidDisappear
viewDidAppear

我的问题是,我可以期望这对于所有转换保持一致,还是在不同的线程上运行,并根据某些事情的加载时间,它们会变化吗?

编辑:凹凸

2 个答案:

答案 0 :(得分:0)

嗯,问自己的正确问题是:你的viewController何时可见/显示?

UIViewController A

UIViewController B

UIScrollView C

1:A:viewWillDisappear - >可见,B不可见(C必须在A中)

2:B:viewWillAppear - >可见,B不可见(C必须在A中)

2到3过渡:A和B都可见

3:A:viewDidDisappear - >一个看不见的B可见(C必须在A中)

4:B:viewDidAppear - >一个看不见的B可见(C必须在B中)

正如您所看到的那样,当两个视图控制器视图都可见时,您在转换过程中有一个时刻,因此您不能只将C从a移动到b,您可能会想到一个解决方法......

也许您可以制作A的屏幕截图并将其添加到所有对象的A上,然后将C移动到B并进行转换

或者你可以在A中淡出C,进行过渡,然后在B中淡出C ...

答案 1 :(得分:0)

实际上,当您尝试将视图添加为子视图并且它已经具有超级视图时,在将其添加到新的超级视图之前,它将从其原始超级视图中删除(根据文档:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html) ......所以,甚至不必像我想的那样担心这件事。