视图控制器未正确显示

时间:2015-04-07 19:17:41

标签: ios objective-c iphone uiviewcontroller uistoryboard

我必须遗漏一些非常基本的东西,但我甚至不知道如何简单地描述问题。我在我的故事板中设计了我的视图控制器布局,只是一堆图像视图,标签,约束等。所有静态 - 代码所做的唯一更改是为按钮添加圆边(UIViews),但是我已经也尝试没有代码,没有任何区别。

一旦我的segue跟随到第二个视图控制器,它就会在iPhone上显示如下:

None of the images or text is displaying

我已经让它在2种情况下(大部分时间)正确显示:

  1. 等待。在30秒到10分钟之间的任何地方。非常不可预测的
  2. 按主页按钮,然后恢复应用程序。有时,当我这样做时,文字仍然不会出现。
  3. 无论哪种方式,这都应该是它的样子:

    When displaying properly

    它不会延迟或任何因为UI即使在没有正确显示的情况下也完全可用。图像不是很大(最大约300x600),所以我怀疑这是一个问题。图像大小也不能解释文本也不显示的原因。 UIImageViews是否异步加载它们的图像?

    我认为由于退出/恢复行为,可能需要刷新视图。我试过[eachView setNeedsDisplay]没有成功。

    有什么想法吗?

    - 更新1 -

    这是我的故事板的图像。正如我所说,一切都是高度静态的。我不知道它为什么不显示。

    Storyboard

    - 更新2 -

    我尝试按照建议将图片文件添加到捆绑包中:

    Bundle

    然后尝试用viewDidLoad方法以语法方式引用它们:

    // Interface
    @property (weak, nonatomic) IBOutlet UIImageView *backgroundImage;
    
    // viewDidLoad
    self.backgroundImage.image = [UIImage imageNamed:@"background.png"];
    

    不幸的是没有区别。

2 个答案:

答案 0 :(得分:0)

我使用xcassets文件遇到过这个问题。如果我只是将它们直接添加到组中,它往往会正常工作。查看此主题以获取更多详细信息。 Impossible to load an image in xcassets on bundle

答案 1 :(得分:0)

以下是那些遇到同样问题的人的问题。问题屏幕的先前视图控制器是登录屏幕。收到凭据后,控制器将异步命中服务器以验证它们。然后,在网络线程调用的回调函数中处理来自服务器的响应。这意味着segue正在从主线程调用。奇怪的是,segue仍然表现不错我想主要线程花了一段时间才意识到发生了什么。

TLDR:确保在主线程上执行Segue。