gpt4 book ai didi

iPhone - 关闭父模态视图

转载 作者:行者123 更新时间:2023-12-03 19:20:26 24 4
gpt4 key购买 nike

我正在勾画一个应用程序的工作流程,其中有一个主菜单“级别 0”,它调用模态视图“级别 1”,而主菜单又调用另一个模态视图“级别 2”。

我能够让它工作,没有问题,并且我能够通过使用以下方式关闭整个堆栈:

[[[self parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];

在模态视图“Level 2”中。

我的问题是,当模态视图“Level 2”有导航栏时,我无法关闭整个堆栈。我上面列出的代码只让我回到一个级别,所以它的行为实际上与我所做的一样:

[self dismissModalViewControllerAnimated:YES];

在模态视图“级别 2”上。

摘要:当模态视图“Level 1”使用以下内容调用模态视图“Level 2”时:

Level2 *level2 = [[[Level2 alloc] initWithNibName:@"Level2" bundle:nil] autorelease];  
[self presentModalViewController:portalMainController animated:YES];

我可以关闭整个堆栈并返回主菜单(0 级)。但是当“Level 1”通过导航栏调用“Level 2”时,如下所示:

 Level2 *level2 = [[[Level2 alloc] initWithNibName:@"Level2" bundle:nil] autorelease];  
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:level2];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];

我无法返回“0 级”,只能返回“1 级”。

有什么建议吗?

最佳答案

我将为 2 级 Controller 创建一个协议(protocol),例如 Level2Delegate。然后将二级 Controller 的委托(delegate)设置为一级 Controller 。然后你可以执行如下操作:

2 级 Controller 将实现此功能,其中 self.delegate 是 1 级 Controller

[self.delegate controllerDidFinish:self];

1 级将实现:

- (void)controllerDidFinish:(Level2Controller *)controller {
[[self parentViewController] dismissModalViewControllerAnimated:NO];
}

关键是建立一系列事件,而不是试图同时消除这两个事件。

关于iPhone - 关闭父模态视图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224520/

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