iOS 根 Controller 启动时出现错误

标签 ios debugging viewcontroller

我在尝试测试运行应用程序时收到以下错误代码。

Application windows are expected to have a root view controller at the end of application launch

该应用程序作为裸壳应用程序运行良好(例如,未实现任何功能),但一旦我向 ViewController.m 添加功能,它就开始生成此错误。

ViewController.m 包含。

//
//  BattTimeViewController.m
//  BattTime
//
//  Created by James Krawczyk on 09/03/2012.
//  Copyright (c) 2012 James Krawczyk. All rights reserved.
//

#import "BattTimeViewController.h"

@interface BattTimeViewController ()

@end

@implementation BattTimeViewController
@synthesize resDisplay;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [self setResDisplay:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (void)batteryStatus
{
    // Get current date time

    datetrack = [NSDate date];

    // Instantiate a NSDateFormatter

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    // Set the dateFormatter format

    //[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    // or this format to show day of the week Sat,11-12-2011 23:27:09

    [dateFormatter setDateFormat:@"HH:mm:ss"];

    // Get the date time in NSString

    NSString *dateInStringFormated = [dateFormatter stringFromDate:datetrack];

    NSLog(@"%@", dateInStringFormated);

    // Release the dateFormatter

    //[dateFormatter release]; 


    NSArray *batteryStatus = [NSArray arrayWithObjects: 
                              @"Battery status is unknown.", 
                              @"Battery is in use.", 
                              @"Battery is charging.", 
                              @"Battery is fully charged.", nil];

    if ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateUnknown)
    {
        [resDisplay setText:[batteryStatus objectAtIndex:0]];  
        NSLog(@"%@", [batteryStatus objectAtIndex:0]);
    }
    else
    {   
        NSString *msg = [NSString stringWithFormat:
                         @"Battery charge level: %0.2f%%\n%@", [[UIDevice currentDevice] batteryLevel] * 100, dateInStringFormated ];
        [resDisplay setText:msg];  
        NSLog(@"%@", msg);
    }
}

- (void)loadView 
{

    // Enable monitoring of battery status
    [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];

    // Print current status
    [self batteryStatus];

    // Request to be notified when battery charge or state changes
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryLevelDidChangeNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryStateDidChangeNotification object:nil];

}

- (void)dealloc 
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];

}
@end

ViewController.h 是;

//
//  BattTimeViewController.h
//  BattTime
//
//  Created by James Krawczyk on 09/03/2012.
//  Copyright (c) 2012 James Krawczyk. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface BattTimeViewController : UIViewController
{
        NSDate  *datetrack;
}

@property (weak, nonatomic) IBOutlet UILabel *resDisplay;




@end

我检查了一些其他问题,也检查了 main.m,但据我所知,那里的一切看起来都很好。然而,就像我说的,在我添加这些功能之前它运行良好。

最后main.m是

//
//  main.m
//  BattTime
//
//  Created by James Krawczyk on 09/03/2012.
//  Copyright (c) 2012 James Krawczyk. All rights reserved.
//

#import <UIKit/UIKit.h>

#import "BattTimeAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([BattTimeAppDelegate class]));
    }
}

最佳答案

我不知道您的 BattTimeAppDelegate 是否使用 NIB、 Storyboard或(受虐)代码来创建窗口,但此错误意味着您的 UIWindow 实例没有 rootViewController。如果使用 NIB 或 SB,您需要将 Window 的 rootViewController 链接到您的 BattTimeViewController。如果使用代码(请不要),您需要执行类似“window.rootViewController = aHandMadeBattTimeViewController;”的操作

关于iOS 根 Controller 启动时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643955/

相关文章:

ios - Swift 协议(protocol)不触发 Objective C 协议(protocol)方法

iphone - iOS - 更新 applicationDidBecomeActive 中的 View Controller

ios - 使用 PHP 在 Objective-C 中上传录制的音频文件

c++ - 在没有调试符号的情况下在 Xcode 中调试 dylib

javascript - 在 Visual Studio Code 中为 dockerized Node 进程设置了断点但尚未绑定(bind)

ios - 从另一个文件快速访问变量

ios - phonegap 构建通用推送插件 - 没有有效的 aps 环境

ios - 如何在加载 URLRequest 之前在 webView 中设置 localStorage 项?

ios - 上传了我的应用程序,该应用程序的包标识符中没有 “com.”

php - 使用 Emacs 和 GEBEN 调试多文件 PHP 脚本