当项目使用自动布局时,导航控制器无法在 iOS 7 中推送视图控制器

Posted

技术标签:

【中文标题】当项目使用自动布局时,导航控制器无法在 iOS 7 中推送视图控制器【英文标题】:Navigation controller can not push view controller in iOS 7 when project using autolayout 【发布时间】:2015-07-01 08:24:30 【问题描述】:

现在在我的项目中,我遇到了自动布局的问题。

ios 8 中:它仍然运行良好。

但是在 iOS 7 中:它推送到视图并且无法加载视图的内容。在导航中,我看到它更改了标题。我猜自动布局是错误的原因。

代码:

MyViewController * viewcontroller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];

[employeeListVC.view updateConstraintsIfNeeded];
[self.navigationController pushViewController:employeeListVC animated:YES];

请帮我解决它。非常感谢。

【问题讨论】:

检查你的控制器是否嵌入到导航控制器中。 我检查了导航控制器。它不是零 【参考方案1】:
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main"
                                                         bundle: nil];
MyViewController *controller = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyViewController"];
[self.navigationController pushViewController:controller animated:YES];

【讨论】:

【参考方案2】:

我猜自动布局不是原因。一种可能的情况是MyViewController 未嵌入UINavigationController

检查self.navigationController 是否为nil

来自控制台的错误消息将很有帮助(如果存在)。

【讨论】:

没有错误,只是无法加载视图的内容。 self.navigationController 不是nil 这是显示日志po self.navigationController <UINavigationController: 0x7fcd5f61bf80>【参考方案3】:

使用 Segue 代替导航控制器。根据我的个人意见,那个更好。

步骤: 1. 嵌入你的视图控制器[初始视图控制器必须嵌入导航控制器]

    为你的 segue 提供一个名称标识符。

    在您的活动中编写代码

    [self performSegueWithIdentifier:@"SegueBlockedContacts" sender:self];

    实现 prepareForSegue 方法。

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([segue.identifier isEqualToString:@"SegueBlockedContacts"]) 
    
        BlockedContactTableVC *blockedContactVC = segue.destinationViewController;
        [blockedContactVC.blockedContacts removeAllObjects];
        blockedContactVC.blockedContacts = blockedContacts;
        blockedContactVC.myDelegate = self;
    
    

就是这样。

【讨论】:

我在视图控制器的日志框架上进行了测试,我看到它仍然正常工作,导航正确,视图框架正确。但是,由表格视图组成的内容视图可以不显示。

以上是关于当项目使用自动布局时,导航控制器无法在 iOS 7 中推送视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

当 iOS 7 上的 selectedIndex 值更改时,TabBar 消失

iOS 7 与 iOS 8 自动布局问题

使用 iOS 7 ***布局指南

带有透明/模糊导航栏的 iOS 7 视图控制器布局问题

ios 6 和 ios 7 Gui 问题

iOS 7 修改默认布局从status bar 底部开始