首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在视图控制器之间切换并摆脱前一个视图控制器

如何在视图控制器之间切换并摆脱前一个视图控制器
EN

Stack Overflow用户
提问于 2014-04-10 17:00:09
回答 5查看 261关注 0票数 1

在android中,在活动之间切换相当简单

你打电话给

代码语言:javascript
运行
复制
Intent intent = new Intent(this,NextActivity.class); <- define the next activity
startActivity(intent); <- start the next activity
finish(); < -get rid of the current activity

现在在iOS中,我知道如何做到这一点:

代码语言:javascript
运行
复制
UIViewController *nextviewcontroller = [[UIViewController alloc]initWithNibName:@"nextvc" bundle:nil];
[self presentViewcontroller:nextviewcontroller animated:YES completion:nil];

如何摆脱当前的视图控制器?所以currentviewcontroller在呈现nextviewcontroller之后就会死掉?

self dismissViewController:是的;似乎没有起到作用

即使不调用[self dismissViewController:YES];,也会调用生命周期方法viewWillDisappear和viewDidDisappear

我希望从memory和视图控制器堆栈中删除"currentviewcontroller“,这样单击"nextviewcontroller”中的"back“将转到当前视图控制器之前的某个第三个视图控制器。

EN

Stack Overflow用户

发布于 2014-04-10 17:10:50

在iOS中则不同,因为没有活动的概念,一切都更专注于应用程序本身(在安卓系统中,你可以混合来自不同应用程序的活动)。因此,没有“视图控制器堆栈”的概念。最相似的概念是导航控制器的“导航堆栈”,您实际上将新的视图控制器推入和弹出到某种线性导航中。系统会自动创建导航栏,并使用后退按钮填充导航栏。

presentViewController将在当前视图控制器的基础上以模态方式显示您的视图控制器,但您不能颠覆呈现的视图控制器,因为它持有并包含(“定义上下文”)新的视图控制器。

如果您为导航层次结构使用导航控制器(我不知道您是否可以),您可以覆盖back按钮,并使用类似于

代码语言:javascript
运行
复制
UIViewController * prev = self.navigationController.viewControllers[self.navigationController.viewControllers.count -2 ]
[self.navigationController popToViewController:prev animated:YES]

使用模式视图控制器,您可以尝试类似(我还没有尝试过,但它可能会起作用)

代码语言:javascript
运行
复制
[self.presentingViewController.navigationController popViewControllerAnimated:YES]

您应该将这些代码之一写入到close按钮的目标操作中。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22983353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档