相关疑难解决方法(0)

正确使用transitionFromViewController:toViewController:duration:options:animations:completion:

我似乎无法找到一个如何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.(我对块本身很熟悉,我只是不确定在这个版本中应该放什么)

iphone objective-c ipad ios

33
推荐指数
1
解决办法
3万
查看次数

定制容器视图控制器

我想创建自己的容器视图控制器,即UINavigationController或类似的东西UITabBarController.文件说我不应该这样做,但为什么不呢?导航和tabbar容器是很好的例子,这样的东西是可能的,并且工作得非常好.另外我知道iPhone有小屏幕,人们不应该通过导航按钮等弄乱它,但是在iPad上有很多空间,将它分成许多视图控制器会给我们很大的机会.

我有一种感觉Apple还没有添加这样的API,但他们会.几天前,他们已经添加了关于iPad专用控制器的文档(是的,容器控制器),并且他们将文本修改为不那么令人生畏的东西.

无论如何......如果我尝试在一个屏幕上使用两个或更多视图控制器,我可能遇到什么问题?我知道只有其中一个会获得方向更改或低内存警告等事件,因此我必须将这些事件传递给包含的VC.我担心与未来版本的iOS的兼容性,因为如果他们将添加新事件,那么包含的VC将不会执行从中继承的默认操作UIViewController.还要别的吗?你认为我的应用程序可能会被Apple拒绝吗?也许还有其他方法可以在每个屏幕上保留一些视图元素,而无需将大量相同的代码复制到每个VC中?

提前致谢.

iphone uiviewcontroller ipad ios

6
推荐指数
1
解决办法
6253
查看次数

dismissViewControllerAnimated是否删除控制器的实例

对于我的应用程序,我想要有一些相同视图控制器的不同实例.现在,我只是创建一个这样的新实例:

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)

但是,我真的希望能够回到这些实例.所以,我有两个问题.

  1. dismissViewControllerAnimated从内存中删除该控制器的实例.如果没有,有没有办法可以重新呈现它.

  2. 那么可能有更好的方法来浏览viewController实例presentViewControllerAnimated.至少,是否有更好的方法来创建一个viewController的新实例,并能够导航到每个实例,希望不在堆栈中.换句话说,如果有三个viewController实例,有没有办法可以从第三个实例转到主实例?

任何想法,将不胜感激.谢谢.

oop cocoa-touch objective-c multiple-instances instance

3
推荐指数
1
解决办法
2884
查看次数