gpt4 book ai didi

objective-c - 来自 UIModalTransitionStylePartialCurl viewController 的 presentModalViewController

转载 作者:行者123 更新时间:2023-12-01 19:24:13 30 4
gpt4 key购买 nike

我有一个通过 UIModalTransitionStylePartialCurl 呈现的模态视图过渡。在该模态视图中有一个按钮,我想:

  • 关闭当前模态视图(向下 curl ),然后
  • 呈现一个新的模态视图(覆盖垂直)。

  • 但是,当我尝试以下操作时,它只是忽略了 curl 模态视图,但不显示新的模态视图:
    [self dismissModalViewControllerAnimated:YES];
    NewView *vc = [[NewView alloc] init];
    [self.parentViewController presentModalViewController:vc animated:YES];

    我觉得这与最后一行有关。在 self 上展示 NewView也不行。我怎样才能做到这一点?

    最佳答案

    您使用的是 iOS 5 吗?

    如果是这样,您看到的问题是由于此处记录的更改:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instp/UIViewController/parentViewController

    该链接的重要一点是:

    Prior to iOS 5.0, if a view did not have a parent view controller and was being presented modally, the view controller that was presenting it would be returned. This is no longer the case. You can get the presenting view controller using the presentingViewController property.



    因此更改为 self.presentingViewController 可能会解决您的问题,但可能不会。

    使用您的第一个模式中的此代码:
    [self dismissModalViewControllerAnimated:YES];
    SecondViewController *sec = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
    sec.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self.presentingViewController presentModalViewController:sec animated:YES];

    您看不到新的 View Controller 。

    在您想使用新的(从 iOS5 开始)方法之后,要获得您的身份:
    - (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion

    此方法是推荐的 presentModalViewController 替代方法。

    以及您的第一个 View Controller 上的自定义方法,例如:
    - (void)cycleModalViewControllersWithController:(UIViewController *)newViewController

    该方法既可以关闭您当前的模态,也可以呈现新的模态,如下所示:
    - (void)cycleModalViewControllersWithController:(UIViewController *)newViewController {
    [self dismissViewControllerAnimated:YES completion:^{
    [self presentViewController:newViewController animated:YES completion:NULL];
    }];
    }

    使用完成 block 来启动新的模态让我们等到旧的模态动画出来。因此,在您的第二个模态视图 Controller 中,您将在您的第一个模态视图 Controller 上调用您的自定义方法,并让它管理解除/呈现新的。

    关于objective-c - 来自 UIModalTransitionStylePartialCurl viewController 的 presentModalViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751315/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com