0

我有一个应用程序,我试图在导航转换期间将一个UIScrollView从一个传递到下一个。UIViewController我试图弄清楚我应该用哪些方法从它中删除UIScrollViewsuperview,然后将它附加到新的UIViewController.

我在第一个NSLogviewDiDisappear/方法和第二个的/方法中做了一个,这是我得到的顺序:viewWillDisappearUIViewControllerviewDidAppearviewWillAppearUIViewController

viewWillDisappear
viewWillAppear
viewDidDisappear
viewDidAppear

我的问题是,我是否可以期望这对于所有转换都保持一致,或者这些转换是否在不同的线程上运行并基于某些事物的加载时间,它们会有所不同吗?

编辑:撞

4

2 回答 2

0

好吧,要问自己的正确问题是:您的 viewController 何时可见/显示?

UIViewController A

UIViewController B

UIScrollView C

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

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

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

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

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

正如您所看到的,当两个视图控制器视图都可见时,您在过渡期间有一段时间,因此您不能只将 C 从 a 移动到 b,您可能会想到一种解决方法...

也许您可以对 A 进行屏幕截图并将其添加到所有对象的 A 中,然后将 C 移动到 B 并进行过渡

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

于 2012-05-18T07:36:32.113 回答
0

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

于 2012-06-24T09:31:29.437 回答