UINavigation PushViewController 不显示下一个视图,而是运行代码
UINavigation PushViewController Doesn't Display Next View, But Runs The Code
问题,我的主屏幕包裹在 UINavigationController 中,当我推送到下一个控制器时它很好,但是当我使用左滑动返回主屏幕然后单击将我带到下一个控制器的按钮有时可以正常工作大约 60%,其他时候它只是挂在那里。我可以在我的日志中看到代码正在执行,就好像视图控制器已显示但它不在屏幕上一样...
所以此时整个 UI 没有反应,我唯一能做的就是从左向右滑动,就像我想回到另一个页面一样,但这就是它变得时髦的地方,我试图显示的屏幕然后从屏幕右侧滑入视图。
当我松开它时,它会重新加载主页视图,然后该应用会按设计运行。
我不知道这件事是怎么回事...下面是我用于呈现下一个视图的代码:
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;
就是这样,不太清楚发生了什么,但任何帮助都会很有帮助,谢谢。
我集成了一个左侧菜单,作为设置屏幕运行,我相信:
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,因为我还需要那小块屏幕来显示所有内容哈哈...
我希望这对以后可能遇到相同问题的任何人有所帮助,祝你好运,编码愉快。
我也遇到了这个问题,我注意到我当前的视图控制器没有嵌入到 UINavigation 控制器中,所以使用 navigationController?.pushViewController(viewController, animated: true)
我当前的 navigationController 是 null
问题,我的主屏幕包裹在 UINavigationController 中,当我推送到下一个控制器时它很好,但是当我使用左滑动返回主屏幕然后单击将我带到下一个控制器的按钮有时可以正常工作大约 60%,其他时候它只是挂在那里。我可以在我的日志中看到代码正在执行,就好像视图控制器已显示但它不在屏幕上一样...
所以此时整个 UI 没有反应,我唯一能做的就是从左向右滑动,就像我想回到另一个页面一样,但这就是它变得时髦的地方,我试图显示的屏幕然后从屏幕右侧滑入视图。
当我松开它时,它会重新加载主页视图,然后该应用会按设计运行。
我不知道这件事是怎么回事...下面是我用于呈现下一个视图的代码:
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;
就是这样,不太清楚发生了什么,但任何帮助都会很有帮助,谢谢。
我集成了一个左侧菜单,作为设置屏幕运行,我相信:
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,因为我还需要那小块屏幕来显示所有内容哈哈...
我希望这对以后可能遇到相同问题的任何人有所帮助,祝你好运,编码愉快。
我也遇到了这个问题,我注意到我当前的视图控制器没有嵌入到 UINavigation 控制器中,所以使用 navigationController?.pushViewController(viewController, animated: true)
我当前的 navigationController 是 null