0
点赞
收藏
分享

微信扫一扫

ios push 无响应处理

在开发中,碰到一个场景,具体是这样的:View-1 prsent 到 VC1,VC1 push 到 VC2,结果 push 没有反应?

具体原因如下:

如果 ViewController 无法执行 push 操作,这可能是因为它没有被嵌入在一个 UINavigationController 中。当你使用 presentViewController:animated:completion: 方法展示 ReleaseViewController 时,它本身并不会被放入导航控制器堆栈中,除非它已经是一个 UINavigationController 的子类或者已经被嵌入到一个 UINavigationController 里。

解决方法:

为了能够在 ViewController 中执行 push 操作,你需要首先确保它是作为 UINavigationController 的一部分被展示的。这里是一个正确的方法,将 ReleaseViewController 嵌入到一个新的 UINavigationController 中,然后展示这个导航控制器:

ReleaseViewController *vc = [ReleaseViewController new];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];
UINavigationController *rootNavController = (UINavigationController *)[UIApplication sharedApplication].delegate.window.rootViewController;

[rootNavController presentViewController:navController animated:YES completion:nil];

在这个修正后的代码中,ReleaseViewController 被初始化为 navController 的根视图控制器,然后这个 navController 被模态呈现。这样,ReleaseViewController 内部的 push 操作就会有一个导航堆栈可供使用。

一旦 ReleaseViewController 被嵌入到 UINavigationController 中,它就可以使用 self.navigationController 来执行 push 操作:

SomeOtherViewController *otherVC = [SomeOtherViewController new];
[self.navigationController pushViewController:otherVC animated:YES];

这里的 self.navigationController 将不再是 nil,因为 ReleaseViewController 现在是一个导航控制器的一部分。

零散知识点,仅做记录!

举报

相关推荐

0 条评论