objective-c - 如何切换回已经加载的 UIViewController?

标签 objective-c ios storyboard segue

我在 Storyboard上有一个 View ,它有一个按钮来执行某个操作。但是,要执行此操作,用户必须登录。按钮处理程序测试用户是否已登录,如果是,则执行一个 segue,如果不是,则执行另一个 segue。 NO segues 推送到登录 View Controller 。还有另一个 segue 连接回第一个 View Controller ,所以如果登录成功,用户可以从他们离开的地方继续。 View Controller 嵌入在导航 Controller 中。

问题是,'return' segue 正在加载 View Controller 的全新实例,而不是引用原始实例,因此我最终在内存中得到了空的界面元素和该 View Controller 的 2 个副本。

我怎样才能回到 View Controller 的原始实例?

最佳答案

假设您使用“push”意味着您正在使用 UINavigationController ,那么就可以使用下面的返回栈顶了。

[self.navigationController popToRootViewControllerAnimated:YES];

UIViewController *prevVC = [self.navigationController.viewControllers objectAtIndex:<n>];
[self.navigationController popToViewController:prevVC animated:YES];

弹出到 <n> 的特定级别是水平。

[self.navigationController popViewControllerAnimated:YES];

如果您只想在导航堆栈中弹出一层备份。

关于objective-c - 如何切换回已经加载的 UIViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003562/

相关文章:

objective-c - 从 UITableViewCell 中的 DisclosureButton 呈现 UIPopover

ios - 在 UITextView 中使用属性文本

ios - 在 UIStoryboard 中使用 NIB

iphone - Storyboard没有堆叠?

ios - 为什么默认 Storyboard 应用程序有第二个接口(interface)声明

ios - 长按 url 并选择 "open in safari"时 DynamicLink 不起作用

iPhone - 如何从应用程序保存用户设置?

ios - Google Cloud Messaging 显示成功消息但不发送 iOS

ios - 导致链接器错误的外部

ios - UIScrollView 中图像上的 cropImage 方法问题产生错误的图像