问题是,我的主屏幕被包裹在UINavigationController中,当我推到下一个控制器时很好,但是当我使用左滑动返回主屏幕然后点击按钮带我到下一个控制器有时它工作正常,大约60%,其他时间只挂在那里。我可以看到代码在我的日志中执行,就好像已经显示了视图控制器但是它不在屏幕上......
所以在这一点上,整个用户界面都没有响应,我唯一可以做的就是从左到右滑动,就像我想回到另一个页面一样,但这就是它变得时髦的地方,我想要的屏幕然后显示屏从屏幕右侧滑动。
当我松开它重新加载主视图,然后该应用程序按设计工作。
我不知道这件事情是怎么回事......以下是我提供下一个观点的代码:
NextViewController *nextViewController = (NextViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"NextViewController"];
nextViewController.nameString = [[self.topArray objectAtIndex:[indexPath row]] objectForKey:@"Name"];
nextViewController.championMCID = [[self.topArray objectAtIndex:[indexPath row]] objectForKey:@"UserId"];
[self.navigationController pushViewController:nextViewController animated:YES];
当我进入下一个屏幕因为我隐藏了导航栏时,我设置了以下内容:
[[self navigationController]setNavigationBarHidden:YES animated:NO];
self.navigationController.interactivePopGestureRecognizer.delegate = self;
就是这样,不太确定发生了什么,但任何帮助都会给你很大的帮助。
答案 0 :(得分:0)
我集成了一个左侧菜单,用作设置屏幕,我相信:
self.navigationController.interactivePopGestureRecognizer.delegate = self;
左侧菜单发生了冲突,当我说冲突时,我的意思是,当我弹出下一个视图控制器时,我相信堆栈中的某个地方的视图被纠结了。因此,当我推送到另一个视图时,应用程序不知道使用左侧菜单或使用导航控制器而没有左侧菜单......
所以不要允许:
self.navigationController.interactivePopGestureRecognizer.delegate = self;
我决定将此代码放在我的viewwillappear方法中:
self.navigationController.interactivePopGestureRecognizer.delegate = self;
NSUInteger viewControllerCount = self.navigationController.viewControllers.count;
NSLog(@"viewControllerCount %ld", viewControllerCount);
if (viewControllerCount == 1)
{
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
else
{
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
我将此代码放在初始导航控制器中,所以无论何时我按下,左侧菜单都会出现在应用程序的每个屏幕上,然后我在每个屏幕上实现了一个后退按钮,这样我就可以弹出视图而不是滑动离开了,我不想在顶部实现UINAVIGATIONBAR,因为我需要那么小的屏幕来显示一切哈哈...
我希望这可以帮助将来可能有相同问题,祝你好运,编码愉快的人。
答案 1 :(得分:0)
我也遇到了这个问题,我注意到我的当前视图控制器未嵌入UINavigation控制器中,因此使用navigationController?.pushViewController(viewController, animated: true)
我当前的NavigationController为空