创build一个没有笔尖的视图控制器

在AppDelegate中,我想创build一个UIViewController子类并添加它的视图。 viw本身将在代码中指定 – 没有笔尖。

基于苹果文档,我应该使用

initWithNibName:nil bundle:nil]; 

然后在控制器的loadView,我添加我的子视图等

但是,下面的下面的testing代码不适用于我。 我模拟了Apple的PageControl演示中的AppDelegate代码,只是因为我的应用程序将实现类似的结构(特别是基本控制器来pipe理分页滚动视图,以及其他控制器的数组来构build页面)。

但我怀疑我的AppDelegate代码是问题,因为日志loggingcertificateinitWithNibName ::和loadView都触发。 下面的应用程序运行,但屏幕是空白的。 我期待带有标签的绿色景观。

AppDelegate中

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ScrollerController *controller = [[ScrollerController alloc] initWithNibName:nil bundle:nil]; [self.window addSubview:controller.view]; [self.window makeKeyAndVisible]; return YES; } 

ScrollerController (UIViewController子类)

 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)loadView{ CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; UIView *contentView = [[UIView alloc] initWithFrame:applicationFrame]; contentView.backgroundColor = [UIColor greenColor]; self.view = contentView; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 100, 40)]; [label setText:@"Label created in ScrollerController.loadView"]; [self.view addSubview:label]; } 

尝试使用: self.window.rootViewController = controller; 而不是[self.window addSubview:controller.view];

请注意,你也应该@synthesize window; 并创build它self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

而不是initWithNibNamed:,只需使用alloc和init或其他任何指定的initalizer为视图控制器。 这是一个项目的例子

 hoverViewController=[[BDHoverViewController alloc] initWithHoverStatusStyle:BDHoverViewStatusActivityProgressStyle]; self.window.rootViewController=hoverViewController; [self.window makeKeyAndVisible]; 

此外,正确的forms(现在反正)将根视图控制器添加到应用程序委托的窗口是这样的:

 self.window.rootViewcontroller=controller; [self.window makeKeyAndVisible]; 

您不需要将视图添加到窗口。 上面的代码自动执行。

祝你好运,

Ť