推送视图控制器不起作用
Posted
技术标签:
【中文标题】推送视图控制器不起作用【英文标题】:Push view controller not working 【发布时间】:2017-01-12 04:37:59 【问题描述】:我在UIViewController
中使用UINavigation
和UIPageView
控制器。我有 3 个按钮,这是我的代码:
- (IBAction)StartButtonClicked:(id)sender
NSLog(@"start button pressed");
[_Timer invalidate];
_Timer = nil;
dispatch_async(dispatch_get_main_queue(), ^
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
CardViewController* controller = [storyboard instantiateViewControllerWithIdentifier:@"CardViewController"];
[self.navigationController pushViewController:controller animated:NO];
- (void)pageViewController
self.pvc = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pvc.view.frame = self.view.bounds;
[self.view addSubview:self.pvc.view];
[self.pvc setViewControllers:@[[viewControllerArray1 objectAtIndex:0]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
- (IBAction)rightButtonPressed:(id)sender
[self pageViewController];
[self.pvc setViewControllers:@[[viewControllerArray1 objectAtIndex:1]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];
- (IBAction)leftButtonPressed:(id)sender
[self pageViewController];
[self.pvc setViewControllers:@[[viewControllerArray1 objectAtIndex:2]] direction:UIPageViewControllerNavigationDirectionReverse animated:YES completion:nil];
当我单击右键并返回此视图控制器时,我的开始按钮的推送视图不起作用。
【问题讨论】:
请查看更新后的答案 当我第二次点击 self.navigationController.viewControllers = null. 为什么你使用 'setViewControllers' 推送使用下面的答案代码,[self.navigationController pushViewController:yourControllerObj animated:NO] 在 storyBord 中初始化如下图,然后当使用 pushViewController 推送时使用 popViewController。不要更改 NavigationController 我正在使用 setviewcontrollers 作为左/右按钮..检查我上面的代码..是不是错了 【参考方案1】:请检查答案。 ios - Push viewController from code and storyboard
不要总是初始化 Storyboard,
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
您可以从 UtoryBoard 本身设置 rootViewController。 将 initialViewController 设置为 UINavigationController 并将 FirstViewController 设置为 RootViewController。
编辑: 对于 Push 使用下面的代码,
CardViewController* controller = [storyboard instantiateViewControllerWithIdentifier:@"CardViewController"];
[self.navigationController pushViewController:controller animated:NO];
然后返回。如果使用默认的 backButton 不需要编写任何代码。 如果使用的是自定义后退按钮,
[self.navigationController popViewController];
检查两件事,
-
您的故事板标识符正确。
根视图有导航控制器。
你的 StoryBoard 应该是这样的,
【讨论】:
在“StartButtonClicked”中,您将再次初始化storyBorad。不需要再次设置storyBoard。通过 main.storyBoard 本身设置。 现在我删除了该行。单击左/右按钮并导航到其他视图控制器,然后从该视图单击返回按钮并返回此处(开始按钮不起作用但左/右键工作).. 这就是场景。 推送使用代码: CardViewController* controller = [storyboard instantiateViewControllerWithIdentifier:@"CardViewController"]; [self.navigationController pushViewController:控制器动画:否];并用于回用 [self.navigationController popViewController];以上是关于推送视图控制器不起作用的主要内容,如果未能解决你的问题,请参考以下文章
收到推送通知时显示视图控制器不起作用,其视图不在窗口层次结构中