- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个标签栏 Controller ,每个标签都有一个导航 Controller 。导航 Controller 有 View Controller 。然后我有一个登录 View Controller 未连接到选项卡栏 Controller ,如果用户需要登录或注销,我会使用下面的代码调用它。
当我尝试根据用户是否登录有条件地推送 View Controller 时,我看到了一些奇怪的行为。
我的逻辑是这样的:
if(currentUser){
}else{
LoginViewController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
svc.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:svc animated:YES];
}
当 View 被推送时,看起来好像登录 View 被推送,另一个登录 View 被推送到它上面。
对于注销,我在 segue 中有相同的代码:
if ([segue.identifier isEqualToString:@"LogoutView"]) {
[self logOut];
LoginViewController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"Login"];
svc.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:svc animated:YES];
}
在这种情况下,我看到了相同的双推,每次我单击我的登录按钮时,它都会推送另一个登录 View 。这种情况会无限发生。然后我收到警告:
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
当我在导航中按返回键时,应用程序崩溃并出现错误:
NSInvalidArgumentException', reason: 'Can't add self as subview'
我是否没有正确推送登录 View Controller ?
最佳答案
Segues 实例化新 Controller ,并执行从源 Controller 到目标 Controller 的转换。因此,您既不应该在代码中实例化 Controller ,也不应该使用 pushViewController:animated: 推送它。如果按钮(而不是 Controller )触发了 segue,那么您只需要获取对目标 Controller (segue.destinationViewController) 的引用,并使用它来隐藏底部栏,
-(void)prepareForSegue:(UIStoryboardSegue *) segue sender:(id) sender {
if ([segue.identifier isEqualToString:@"LogoutView"]) {
[self logOut];
LoginViewController *svc = segue.destinationViewController;
svc.hidesBottomBarWhenPushed = YES;
}
}
如果你需要有条件地这样做,那么 segue 应该直接从 Controller 连接,而不是按钮。然后你需要调用 performSegueWithIdentifier: 在一些你有逻辑来确定应该执行哪个(或是否)segue 的方法中。
关于ios - 如何将 View Controller 推送到 iOS 标签栏中的导航 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21638925/
我在让我的操作栏显示图标时遇到问题。它显示了我在溢出菜单中设置的文本/标题(三个点),但没有任何操作。这是我的代码,我错过了什么? MainActivity.java public class Mai
我正在尝试在 android 中制作一个动态操作栏,现在我正在尝试像这样在操作栏中进行搜索。 http://developer.android.com/images/ui/actionbar-sear
我正在编写 uiautomator 测试,但我很难弄清楚如何单击我的操作栏图标。 如果我的操作是“始终”显示,则很容易找到并点击。 如果我的操作是显示“从不”,我必须单击菜单,然后从菜单中单击。先点击
我有一个正在寻找特定 URI 的重写规则。当它匹配特定的 URL 时,它会使用正确的文件路径重写它,以便可以找到所需的内容。然后它将协议(protocol)更改为 HTTPS 并允许请求通过。 我有两
我正在为 android 中的 ActionBar 而苦苦挣扎。 这是我的问题:我的操作项没有显示在操作栏中,而是堆叠在操作溢出中,无论我做什么.. 我花了一天的时间寻找解决方案,但我似乎找不到缺少的
我的网络应用程序在 Tomcat 下运行,它非常密集地使用 AJAX 请求,在开发过程中我也必须密集地重新部署网络应用程序。重新部署后,我通常会简单地刷新页面,知道用户 session 已删除,但我总
我是一名优秀的程序员,十分优秀!