我似乎无法找到一个如何transitionFromViewController:toViewController:duration:options:animations:completion:正确使用的好例子.
它是否正确?(假设我想将VC换成另一个)
// Assume fromVC and toVC view controllers are defined and fromVC is already added as a child view controller
[self addChildViewController:toVC];
[self transitionFromViewController:fromVC toViewController:toVC duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:NULL completion:^(BOOL finished) {
[fromVC willMoveToParentViewController:nil];
[fromVC removeFromParentViewController];
[toVC didMoveToParentViewController:self];
}];
Run Code Online (Sandbox Code Playgroud)
关于何时调用什么文档并不清楚:
该addChildViewController:方法调用 willMoveToParentViewController:为孩子添加它之前被添加视图控制器的方法,但它不会调用 didMoveToParentViewController:方法.容器视图控制器类必须在转换到新子项完成后调用子视图控制器的didMoveToParentViewController:或者,如果没有转换,则在调用addChildViewController:方法之后立即调用 .
同样,容器视图控制器负责在调用removeFromParentViewController:方法之前调用 willMoveToParentViewController :方法.该 removeFromParentViewController:方法调用 didMoveToParentViewController:子视图控制器的方法.
另一件事是,在这种情况下你如何使用动画块?请注意上面的代码我刚才提出的NULL.(我对块本身很熟悉,我只是不确定在这个版本中应该放什么)
我想创建自己的容器视图控制器,即UINavigationController或类似的东西UITabBarController.文件说我不应该这样做,但为什么不呢?导航和tabbar容器是很好的例子,这样的东西是可能的,并且工作得非常好.另外我知道iPhone有小屏幕,人们不应该通过导航按钮等弄乱它,但是在iPad上有很多空间,将它分成许多视图控制器会给我们很大的机会.
我有一种感觉Apple还没有添加这样的API,但他们会.几天前,他们已经添加了关于iPad专用控制器的文档(是的,容器控制器),并且他们将文本修改为不那么令人生畏的东西.
无论如何......如果我尝试在一个屏幕上使用两个或更多视图控制器,我可能遇到什么问题?我知道只有其中一个会获得方向更改或低内存警告等事件,因此我必须将这些事件传递给包含的VC.我担心与未来版本的iOS的兼容性,因为如果他们将添加新事件,那么包含的VC将不会执行从中继承的默认操作UIViewController.还要别的吗?你认为我的应用程序可能会被Apple拒绝吗?也许还有其他方法可以在每个屏幕上保留一些视图元素,而无需将大量相同的代码复制到每个VC中?
提前致谢.
对于我的应用程序,我想要有一些相同视图控制器的不同实例.现在,我只是创建一个这样的新实例:
iSafeViewController *tab = [[iSafeViewController alloc] init];
[tab setModalPresentationStyle:UIModalPresentationFullScreen];
[tab setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:tab animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
大.既然这是在iSafeViewController类中完成的,我还有另一个按钮,它当前只是关闭堆栈中的最新控制器.
- (IBAction)closeTab:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
但是,我真的希望能够回到这些实例.所以,我有两个问题.
并dismissViewControllerAnimated从内存中删除该控制器的实例.如果没有,有没有办法可以重新呈现它.
那么可能有更好的方法来浏览viewController实例presentViewControllerAnimated.至少,是否有更好的方法来创建一个viewController的新实例,并能够导航到每个实例,希望不在堆栈中.换句话说,如果有三个viewController实例,有没有办法可以从第三个实例转到主实例?
任何想法,将不胜感激.谢谢.