gpt4 book ai didi

iOS:自定义 segue 和 presentViewController 未按预期工作

转载 作者:行者123 更新时间:2023-11-29 13:31:53 26 4
gpt4 key购买 nike

我正在使用一个看起来像这样的自定义转场:

@implementation ModalPushSegue

- (void)perform {
UIViewController *fromController = self.sourceViewController;
UIViewController *toController = self.destinationViewController;
UIView *fromView = fromController.view;
UIView *toView = toController.view;

CGPoint centerStage = toView.centerStage;
toView.center = toView.rightStage;

[fromView.window addSubview:toView];
[fromController addChildViewController:toController];

[UIView transitionWithView:toView
duration:0.5 options:0
animations:^{
toView.center = centerStage;
}
completion:nil];

}

这很有效,因为 View 按预期从右侧滑动,并且 Controller 被添加到 Controller 层次结构中。

但稍后在添加的 Controller 中我这样做:

[self presentViewController:anotherController animated:YES completion:nil];

我希望这会将新 Controller 的 View 向上滑动到屏幕 ala modal 样式。但是相反发生的是新 View 没有出现。当我稍后移除此 Controller 时,它的 View 会闪烁并从屏幕上滑出,留下黑色背景而不是原来的 View 。

我已经研究了一段时间,如果我将代码更改为

//[self presentViewController:oauthController animated:YES completion:nil];
[self.view addSubview:oauthController.view];
[self addChildViewController:oauthController];

然后 View 按预期显示,但未调整大小。

我的问题似乎在于 segues 设置层次结构的方式与 presentViewController 做事的方式。我已经做了很多阅读和搜索,但到目前为止还无法清楚地了解到底发生了什么。

我也试过在 segue 中使用 presentViewController 但不是将新 View 放在旧 View 上,而是屏幕变黑,然后新 View 继续滑动。

感谢任何帮助。

最佳答案

在目标 View Controller (在 Storyboard中)上设置 Storyboard ID,然后尝试以下代码:

AnotherController *viewC = [self.storyboard instantiateViewControllerWithIdentifier:@"AnotherController"]; 
ModalPushSegue *segue = [[ZHCustomSegue alloc] initWithIdentifier:@"coolSegueName" source:self destination:viewC];

[segue perform];

关于iOS:自定义 segue 和 presentViewController 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641814/

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