创建一个新的ViewController和xib以进行编程显示(使用addSubview)

时间:2010-08-21 05:20:30

标签: iphone cocoa-touch uikit openfeint

我正在编写一个供开发人员用于iPhone的库(类似于实现OpenFeint的方式),我正在尝试使用关联的XIB创建一个ViewController,以便我可以在我的代码中实例化

SplashScreenViewController *splashScreenViewController = [[SplashScreenViewController alloc] init];
UIWindow *topApplicationWindow = [self getTopWindow];
[topApplicationWindow addSubview:splashScreenViewController.view];

然而,虽然这适用于简单的控件(UIButtons等),但我的SplashScreenViewController没有显示任何内容。 SplashScreenViewController非常简单:

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>


@interface SplashScreenView : UIViewController {
}

@end

并且实现为空。在我的View XIB(SplashScreenView.xib)中,我尝试将文件所有者的类设置为不起作用的SplashScreenViewController,然后我按照我在OpenFeint中看到的方式尝试它,即在IB中添加视图控制器使主要的UIView成为它的一个孩子,并使其成为SplashScreenViewController类。这也行不通(不显示)。

我想知道是否有人对我可能缺少的内容有一个好主意,或者是否有人可以按照我尝试的方式推荐创建新ViewControllers的演练。

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试两件事:

  1. 调用 initWithNibName 而不仅仅是init。也许您正在谈论的OpenFeint覆盖了init来调用initWithNibName,这就是为什么你没有看到它。

  2. 将SplashScreenViewController设置为文件所有者,并将其视图插座连接到您的 查看IB。

  3. 希望它有所帮助。

答案 1 :(得分:0)

而不是[splashScreenViewController alloc],请尝试[SplashScreenViewController alloc]。我很惊讶你没有得到编译器警告。