iphone - 从选项卡栏返回到第一个 View

标签 iphone cocoa-touch uitabbarcontroller uistoryboard

这是我的 Storyboard
storyboard 正如所指出的,我添加了一个注销按钮,以到达第一个 View 。

当应用程序启动时,它看起来像这样:
start
登录后,进入标签栏,如下所示:
logout
我已将“注销”按钮与第一个 View 连接并选择推送。但是当我按下“注销”时,会发生以下情况:
error
我希望登录 View 按原样显示,但会出现选项卡栏以及一个我不希望出现的“后退”按钮。
*前 3 个选项卡项目有自己的导航 Controller ,注销按钮位于第一个选项卡项目上。

最佳答案

更新
我现在明白 TabBarController 是从 loginController 呈现的。

正确的返回方式是:

[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];

我将在下面的注释中留下,他们假设我们正在处理 UINavigationController 层次结构。仍然值得一读!

<小时/>

这是部分答案...在我写完它之后,我意识到您的选项卡栏 Controller 不是您的登录 NavController 堆栈的一部分(我不这么认为),所以它不会工作 - 但您应该无论如何,请阅读它以了解为什么 Segue/PUSHing 不是正确的方法。

我稍后会针对您的案例更新更准确的答案...

您不想使用segue,或者PUSH...将其想象为一堆卡片,推送是将更多卡片添加到堆栈中,因此您将登录屏幕的版本添加到您的NavController 堆栈包含在选项卡栏 Controller 内。这与您已经创建的登录屏幕实例不同,它是一个新实例(push 会创建一个新实例)。

您想要从牌堆中移除牌并返回到您的第一张牌。这是一个 POP 操作。

其中一个可以工作。

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

它们是UINavigationController方法。您可以从最顶层的 UIViewController 访问它们,如下所示:

[self navigationController] popToRootViewControllerAnimated:NO;

[self navigationController] popToViewController:myLogInViewController animated:YES;

您可以通过在 viewController 中放置 IBAction 来从注销按钮触发它们。

看起来您想要返回的 viewController 确实是您的 Root View Controller ,因此请尝试一下,看看它是否有效。如果没有,您将需要对要返回的 viewController 的引用。你可以通过计算堆栈来做到这一点。该堆栈作为导航 Controller 的 viewControllers 数组属性进行访问。例如,如果它是从 rootViewController 向上的第二个 viewController,

UIViewController* logInViewController = 
        [[self navigationController] viewControllers] objectAtIndex:1];

会得到你想要的那个。

关于iphone - 从选项卡栏返回到第一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14297021/

相关文章:

IOS 选项卡栏名称显示其他 View Controller ,但不显示 TableView Controller ?

ios - 选项卡栏 Controller - 显示不是选项卡之一的 View Controller

ios - 单击时从一个标签栏移动到另一个标签栏(带有导航 Controller 的标签栏)

iphone - 从 iPhone 中的资源目录加载 PDF 文件崩溃

ios - 从 Assets 文件夹中检索图像 - iOS

iphone - UIWebView加载被覆盖但不会刷新的本地镜像

iphone - 如何在iphone中获取gmsmapview的坐标中心

iphone - 查找 GPS 信号强度

cocoa-touch - cocoa NSString 爆炸

iphone - 如何检查您的 iPhone 联系人列表中的人是否安装了应用程序?