gpt4 book ai didi

ios - 关闭模态视图然后执行 segue 以打开第二个模态视图

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:11 24 4
gpt4 key购买 nike

我有一个允许用户登录和注册的 HomeController。如果用户点击登录,我会使用 segue 打开一个模态视图。

在模态视图中有一个按钮,上面写着注册。所需的操作是关闭登录模态视图,然后使用 performSegueWithIdentifier:

打开注册模态视图
- (void)loginControllerDidRegister:(LoginController *)controller sender:(id)sender
{
NSLog(@"loginControllerDidRegister");
[self dismissViewControllerAnimated:YES completion:nil];
[self performSegueWithIdentifier:@"RegistrationSegue" sender:sender];
}

这正确地取消了模态视图,然后它调用了 performSegueWithIdentifier:,其中我有日志代码显示它正在被调用,就好像我按下了注册按钮一样。

我认为登录模态视图消失的动画可能会干扰第二个模态视图的显示。关于如何解决这个问题有什么想法吗?

最佳答案

好吧,您需要启动“第二模式”vc。这就是“prepareForSegue:”方法的作用。您还需要覆盖“执行:”方法。这将比您想象的要复杂一些。如果有帮助,这里是 segue 如何工作的分割...

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;

被调用并传入“segue”。幕后花絮

- (id)initWithIdentifier:(NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)source;

被调用,这就是创建“segue”的地方。

“segue”对象具有以下属性

(NSString *)identifier
(UIViewController *)sourceViewController
(UIViewController *)destinationViewController

没有这些,就无法执行 segue。这些类似于手动分配您的 View Controller

SomeViewController *secondView = [SomeViewController alloc] initwithNibName:@"SomeViewController" bundle:nil];

然后

[[segue destinationViewController] setModalTransitionStyle:UIModalTransitionStyle(...)];

这是...

secondView.modalTransitionStyle = UIModalTransitionStyle(...);

(...) 将是 Storyboard中选择的“segue”过渡。

最后

[[segue sourceViewController] presentModalViewController:destinationViewController animated:YES];

这只是

[self presentModelViewController:secondView animated:YES];

是让这一切发生的原因。您基本上必须对引擎盖下的那些进行调整才能获得您想要的工作,但它是可行的。

关于ios - 关闭模态视图然后执行 segue 以打开第二个模态视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451659/

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