iPhone视图无法显示

时间:2009-07-16 23:14:01

标签: iphone xcode view xib

我很难找到一个非常简单的视图来显示。此视图具有由切换视图控制器管理的自定义视图控制器。 XIB上有一个UIViewController组件,其Image属性设置。视图控制器如下:

InstructionsViewController.h

#import <UIKit/UIKit.h>

@interface InstructionsViewController : UIViewController {

}

@end

InstructionsViewController.m

#import "InstructionsViewController.h"

@implementation InstructionsViewController



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
    // Release anything that's not essential, such as cached data
}

- (void)dealloc {
    [super dealloc];
}


@end

我还将XIB的File's Owner的class属性设置为InstructionsViewController,将Ctrl + Dragged File的Owner设置为View图标,并从弹出菜单中选择View。

显示视图的代码是:

- (void) showInstructions
{
    //Lazy load the instruction view.
    if (self.instructionsViewController == nil)
    {
        InstructionsViewController *viewController = [[InstructionsViewController alloc]
                                                initWithNibName:@"InstructionsView" 
                                                bundle:nil];
        self.instructionsViewController = viewController;
        [viewController release];
    }

    [self.view insertSubview:viewController.view atIndex:0];
}

我的视图控制器在切换时动画不同的视图,加载和显示其他三个视图没有问题。它只是不喜欢这个。

我确信我错过了一些简单的事情,但对于我的生活,我无法让它因某些原因而工作。有没有人有任何指示?

谢谢,

史蒂夫

4 个答案:

答案 0 :(得分:1)

我刚才有同样的事情。结束删除UIImageView,放置一个新的,然后重新链接,它工作。在某处似乎有些腐败。

答案 1 :(得分:0)

甚至不确定这是如何编译的。您正在nif检查之外插入子视图,其中viewController超出范围。

您可能想要

[self.view insertSubview:self.instructionsViewController.view atIndex:0];

答案 2 :(得分:0)

您是否通过在那里设置断点来验证是否正在调用showInstructions?另一件需要检查的事情是,您要在z-order的底部插入Instructions视图,因此它将位于所有其他项目的后面。尝试使用:

[self.view addSubview:self.instructionsViewController.view];

这会将它添加到z顺序的顶部。如果这不起作用,也请尝试:

[self.view setNeedsLayout];

和/或:

[self.instructionsViewController.view setNeedsLayout];

答案 3 :(得分:0)

好的,我终于解决了!

问题在于XCode或Interface Builder与我在IB中为Image View控件指定的PNG文件不一致。我尝试重新命名,重新指定等等无济于事。

我最后不得不删除图形并从它的源位置重新复制它。然后我在Image View中重新指定它,构建并运行。现在它有效。

世界上的一切都很美好。

感谢那些花时间阅读并提供帮助的人。我非常感激!

史蒂夫