gpt4 book ai didi

ios - 如何在 Storyboard中自定义后退按钮

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

我创建了一个具有 3 个 ViewController 的应用程序,名称为:(ViewController,ViewController2,ViewController3)在 ViewController 中存在一个按钮,用于检查文档文件夹中的文件或下载它。例如,首先检查文件是否存在于文档文件夹中,然后转到 ViewController3,否则转到 ViewController2 并下载它。

因此 ViewController2 用于下载,并具有用于显示下载状态的 UILable 和 UIProgress。如果下载的页面中不存在文件,请转到 ViewController3。

所以 ViewController3 用于显示文件。(这些页面像我底部的图片一样通过推送连接在一起)

当我转到任何页面并单击后退按钮返回上一页时,对吗?我什么时候单击第一页中的按钮并且文件不存在并在第二页中下载然后完成下载转到第 3 页。现在我想要什么时候单击第 3 页中的后退按钮转到第 1 页没有第 2 页!!!!

我在 Storyboard中工作。

enter image description here

最佳答案

您可以通过拦截 ViewController3 中的后退按钮事件并使用 unwindSegues 来实现此目的。查看 William Jockusch 对此的回复 question如何拦截后退按钮事件。

要在这种特殊情况下使用展开转场,您需要:

1) 在您的 ViewController1 中创建一个方法,例如

- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue
{
NSLog(@"Rolled back");
}

2) 在你的 Storyboard中缩小,然后从你的 ViewController3 按住 ctrl 键拖动到 ViewController3 场景中左侧的“退出”绿框(连同红框 First Responder 和所有 Controller View 的 subview )。将显示一个弹出窗口,询问您要将 unwind segue 连接到哪个 IBAction,您应该能够选择刚刚创建的 unwindToThisViewController 操作。这将创建一个 unwind segue。

3) 从场景框中选择这个unwind segue并给它一个ID,比如“unwindToStart”

4) 最后,在您的 ViewController3 类中,重写方法 viewWillDisappear,如下所示:

-(void) viewWillDisappear:(BOOL)animated 
{
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
[self performSegueWithIdentifier:@"unwindToStart" sender:self];
[super viewWillDisappear:animated];
}

这将拦截后退按钮事件并展开到您的 ViewController1,您就可以开始了。

编辑:由于仅 iOS 6 及更高版本支持展开转场,如果您需要在早期版本的 iOS 上使用此功能,我认为唯一的方法是从 ViewController3 的 viewDidLoad 中的 NavigationController 堆栈中手动删除 ViewController2。像下面的代码应该做的事情:

- (void)viewDidLoad
{
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
for(UIViewController* vc in self.navigationController.viewControllers)
{
if ([vc isKindOfClass:[ViewController2 class]]) {
[viewControllers removeObject:vc];
break;
}
}
self.navigationController.viewControllers = [NSArray arrayWithArray:viewControllers];
// Do any additional setup after loading the view.
}

关于ios - 如何在 Storyboard中自定义后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460893/

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