Objective c iOS相当于Android finish()

Objective c iOS相当于Android finish(),objective-c,uiviewcontroller,Objective C,Uiviewcontroller,我对iOS开发比较陌生。我首先为Android开发了一个应用程序,现在正在将它移植到iOS上。有一件事我搞不懂,那就是如何让视图控制器自动消失。我习惯于Android中的finish()方法。使用该方法,当前活动将自行结束,并向用户显示在打开当前屏幕之前打开的上一个屏幕 我试图完成的是在保存记录后使我的“创建”屏幕消失。在Android世界中,我只需调用finish()方法,就可以解决这个问题。iOS的等价物是什么 我已经在我的iOS应用程序中尝试了以下代码,希望能将视图动画化 [self.na

我对iOS开发比较陌生。我首先为Android开发了一个应用程序,现在正在将它移植到iOS上。有一件事我搞不懂,那就是如何让
视图控制器
自动消失。我习惯于Android中的
finish()
方法。使用该方法,当前活动将自行结束,并向用户显示在打开当前屏幕之前打开的上一个屏幕

我试图完成的是在保存记录后使我的“创建”屏幕消失。在Android世界中,我只需调用
finish()
方法,就可以解决这个问题。iOS的等价物是什么

我已经在我的iOS应用程序中尝试了以下代码,希望能将视图动画化

[self.navigationController popToRootViewControllerAnimated:YES];
编辑: 以下介绍了这一观点

SettingsViewController *vc = [[SettingsViewController alloc] initWithNibName:@"SettingsView"]; 
controllers = [NSArray arrayWithObject:vc];
self.sideMenu.navigationController.viewControllers = controllers;
[self.sideMenu setMenuState:MFSideMenuStateClosed];
其中,
控制器
的定义如下:

NSArray *controllers = nil;

您是如何演示此视图控制器的

您是否使用了presentViewController:animated:completion:?如果是这样,您需要这样的内容:

[self dismissViewControllerAnimated: YES];
如果您使用的是
pushViewController:animated:
,那么您不是在谈论模式视图。您所说的是推到堆栈上的普通ViewController。要“撤消”此操作,需要弹出视图控制器:

[self.navigationController popViewControllerAnimated: YES];
虽然
finish()
[self dismissViewControllerAnimated:YES]
在功能上相似,但它们并不完全相同,当我们在Android中调用
finish()
方法时,我们通过编程告诉Android系统完全从内存中销毁活动,当我们重写
onDestroy()
活动生命周期回调并添加日志时,调用
finish()
时会显示日志<当系统需要资源并且通过完成活动释放内存时,也会调用code>onDestroy()。但是

[self dismissViewControllerAnimated: YES];

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

在按下viewcontroller后调用此方法

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!
}

如何在屏幕上显示视图控制器?删除它的唯一方法是撤消它的显示方式。那么,您是否正在尝试使SettingsViewController消失?你想把它放在哪里?这是你展示的代码中堆栈中唯一的视图控制器。我正在开发附带菜单的应用程序。当应用程序加载时,将显示一个屏幕。用户可以选择打开侧菜单并从中选择菜单项。上面我的编辑中的代码是在用户从侧菜单选择一个项目时执行的。好的。我想我还是不明白你想让创建屏幕“消失”是什么意思。这是非常模糊的。是否要再次显示侧菜单?是否要完全删除所有视图控制器并显示黑屏?您想转到主屏幕吗?我希望在用户打开当前屏幕之前显示任何可见的屏幕。当用户最初打开我的应用程序时,他们会看到一个屏幕,该屏幕会拉取并显示RSS提要。然后他们可以打开菜单并从中选择一个项目。其中一个菜单项是能够跟踪某些信息。当用户保存该信息(即输入数据,单击dave按钮)时,我希望该屏幕“消失”,并显示最后一个可见屏幕。这有意义吗?我在问题中添加了用于显示当前视图控制器的代码。