【问题标题】:View does not appear through pushViewController in xcode 6.2在 xcode 6.2 中,视图不会通过 pushViewController 出现
【发布时间】:2015-06-03 15:51:30
【问题描述】:

我刚刚更新到 xcode 6.2,在显示新创建的视图(在名为 myController 的视图控制器中)时遇到问题:

[self.navigationController pushViewController:myController animated:YES];

viewDidLoadviewWillAppearmyController 中都可以正常调用(即在控制台中看到NSlog 输出),但由于某种原因,创建的 XIB 的界面保持空白。导航控件有效并且位于空白屏幕上方。在模拟器和设备上运行时会发生这种情况。

旧视图控制器在同一应用程序中以相同方式调用时不会出现此问题。有趣的是,动态生成的视图会显示,但在界面构建器中创建的新视图保持空白。我曾尝试复制旧的 XIB 并创建一个新的,但不会显示界面(带有一个按钮的简单屏幕)。

在根控制器中调整新视图的所有步骤都已执行,只是似乎不会显示XIB。控制台中绝对没有错误输出表明任何错误。

有什么想法、解决方法、日志文件要检查吗? (除了使用旧版本的 xcode)。

谢谢

【问题讨论】:

  • 我的第一个猜测是 self.navigationController 为零...你的视图控制器有吗?在该行之前添加NSLog(@"%@", self.navigationController);
  • 我将不得不稍后检查,但在 Delegate 文件中肯定已经配置了 NavigationController。我不确定为什么 NavigationController 对于一个 TableView 启动选项是 nil 而不是另一个。这是一个成熟的应用程序,我正在改进中。
  • self.navigationController 不是零。唯一的选择似乎是以编程方式构建界面

标签: ios xib pushviewcontroller


【解决方案1】:

这里的线程发起者......我最终通过显式调用来显示它

myController = [[myController alloc] init];

之前

[self.navigationController pushViewController:myController Animation:YES];

对于以前的视图控制器,alloc 似乎是隐式完成的。不知道如何/为什么。感谢所有回复的人。

【讨论】:

    【解决方案2】:

    如果您从不使用 AutoLayout 的旧 XIB 文件复制视图,而新的 XIB/Storyboard 使用,则布局约束可能会被搞砸。检查您当前的 XIB/Storyboard 是否使用 Autoayout 和 disable it 或为所有视图和子视图正确设置。

    编辑:

    对于包含您的按钮的新 XIB,确认在文件检查器中未选中自动布局按钮,以确保您没有使用 AutoLayout -

    【讨论】:

    • 我不使用自动布局,我尝试了一个非常简单的视图,它应该只显示一个按钮和一个红色背景,所以不应该有任何约​​束困难。但是我不知道如果我将早期的 XIB 复制到不同的控制器上,问题是否会在项目中级联。我不知道要检查哪些文件以查看是否存在此类问题。
    • 自动布局没有被选中
    猜你喜欢
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多