首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相当于Android finish()的iOS

相当于Android finish()的iOS
EN

Stack Overflow用户
提问于 2013-04-07 02:53:36
回答 3查看 7.2K关注 0票数 9

我是iOS开发的新手。我首先为安卓开发了一个应用程序,现在正在将它移植到iOS上。有一件事我搞不懂,那就是如何让ViewController“消失”。我习惯了Android中的finish()方法。使用该方法,当前活动将自动结束,并向用户显示在打开当前屏幕之前打开的前一个屏幕。

我要做的就是在保存一条记录后让我的“创建”屏幕消失。在安卓世界里,我只需要调用finish()方法就可以了。iOS的等价物是什么?

我已经在我的iOS应用程序中尝试了以下代码,希望视图可以动态显示。

代码语言:javascript
复制
[self.navigationController popToRootViewControllerAnimated:YES];

编辑:视图如下所示。

代码语言:javascript
复制
SettingsViewController *vc = [[SettingsViewController alloc] initWithNibName:@"SettingsView"]; 
controllers = [NSArray arrayWithObject:vc];
self.sideMenu.navigationController.viewControllers = controllers;
[self.sideMenu setMenuState:MFSideMenuStateClosed];

其中controllers是这样定义的:

代码语言:javascript
复制
NSArray *controllers = nil;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-07 02:57:45

你是如何呈现这个视图控制器的?

你使用presentViewController:animated:completion:了吗?如果是这样的话,你想要这样的东西:

代码语言:javascript
复制
[self dismissViewControllerAnimated: YES];

如果您使用的是pushViewController:animated:,那么您谈论的不是模式视图。您正在谈论的是一个推送到堆栈上的普通ViewController。要“撤消”此操作,您需要弹出视图控制器:

代码语言:javascript
复制
[self.navigationController popViewControllerAnimated: YES];
票数 17
EN

Stack Overflow用户

发布于 2016-07-21 15:23:37

虽然finish()[self dismissViewControllerAnimated:YES]在功能上类似,但并不完全相同,当我们在Android中调用finish()方法时,我们是程序化地告诉Android系统从内存中完全销毁活动,当我们覆盖onDestroy()活动生命周期回调并添加日志时,则在调用finish()时会显示日志。当系统需要资源时,也会调用onDestroy(),它通过完成活动来释放内存。但

代码语言:javascript
复制
[self dismissViewControllerAnimated: YES];

不从内存中删除UIViewController实例,IOS中onDestroy()的等效回调方法是viewDidUnload(),该方法不会在消息dismissViewController上调用。我认为IOS系统只能在系统需要资源时才能为UIViewController实例释放内存,但我们不能通过编程方式做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2019-03-13 18:39:27

在推送视图控制器之后,调用此方法

代码语言:javascript
复制
func finish(){
var navigationArray = self.navigationController?.viewControllers //To get all UIViewController stack as Array
navigationArray!.remove(at: (navigationArray?.count)! - 2) // To remove previous UIViewController
self.navigationController?.viewControllers = navigationArray!
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15854770

复制
相关文章

相似问题

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