UINavigationController错误导致我的应用程序崩溃

时间:2011-09-04 12:21:31

标签: iphone ios uinavigationcontroller

我正在尝试我的第一个UINavigationController应用程序,它现在崩溃了。如果我注释掉以navController开头的行,我不会崩溃,但是如果当然应用程序也不起作用。

(注意:我的环境是IOS 4.2和Xcode 3.2)

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    WpglViewController *firstViewController = [[WpglViewController alloc] init];    

    navController = [[UINavigationController alloc] initWithRootViewController:firstViewController];

    [firstViewController release];

    [window addSubview:navController.view];

    [self.window makeKeyAndVisible];

    return YES;
}

这是崩溃信息。有人能指出我正确的方向吗?谢谢您的帮助。

2011-09-04 07:59:49.309 wpgl[7302:207] -[WpglViewController title]: unrecognized selector sent to instance 0x4b134c0
2011-09-04 07:59:49.313 wpgl[7302:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[WpglViewController title]: unrecognized selector sent to instance 0x4b134c0'
*** Call stack at first throw:

(
    0   CoreFoundation                      0x00ecdbe9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00cc25c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00ecf6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00e3f366 ___forwarding___ + 966
    4   CoreFoundation                      0x00e3ef22 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x00375781 -[UINavigationController pushViewController:transition:forceImmediate:] + 743
    6   UIKit                               0x0036e4a0 -[UINavigationController pushViewController:animated:] + 62
    7   UIKit                               0x00370d98 -[UINavigationController initWithRootViewController:] + 78
    8   wpgl                                0x00001df9 -[wpglAppDelegate application:didFinishLaunchingWithOptions:] + 146
    9   UIKit                               0x002b81fa -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1163
    10  UIKit                               0x002ba55e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439
    11  UIKit                               0x002c4db2 -[UIApplication handleEvent:withNewEvent:] + 1533
    12  UIKit                               0x002bd202 -[UIApplication sendEvent:] + 71
    13  UIKit                               0x002c2732 _UIApplicationHandleEvent + 7576
    14  GraphicsServices                    0x016e4a36 PurpleEventCallback + 1550
    15  CoreFoundation                      0x00eaf064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    16  CoreFoundation                      0x00e0f6f7 __CFRunLoopDoSource1 + 215
    17  CoreFoundation                      0x00e0c983 __CFRunLoopRun + 979
    18  CoreFoundation                      0x00e0c240 CFRunLoopRunSpecific + 208
    19  CoreFoundation                      0x00e0c161 CFRunLoopRunInMode + 97
    20  UIKit                               0x002b9fa8 -[UIApplication _run] + 636
    21  UIKit                               0x002c642e UIApplicationMain + 1160
    22  wpgl                                0x00001d44 main + 102
    23  wpgl                                0x00001cd5 start + 53
)
terminate called after throwing an instance of 'NSException'

在我的WpglViewController.h文件中,我声明了以下内容:

@interface WpglViewController : NSObject <UIApplicationDelegate>

{
    UILabel *servingsLabel;
    UILabel *quantityLabel;
    UINavigationController *navigationController;
}

@property (nonatomic, retain) IBOutlet UILabel *servingsLabel;
@property (nonatomic, retain) IBOutlet UILabel *quantityLabel;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UINavigationController *navigationController;

@end

在我的WpglViewController中我声明了以下内容:

#import "WpglViewController.h"

@implementation WpglViewController

@synthesize servingsLabel;
@synthesize quantityLabel;
@synthesize navigationController;

5 个答案:

答案 0 :(得分:3)

WpglViewController需要是UIViewController的子类。

异常说WpglViewController没有响应它在UIViewController中所期望的title方法。

答案 1 :(得分:1)

2011-09-04 07:59:49.309 wpgl[7302:207] -[WpglViewController title]: unrecognized selector sent to instance 0x4b134c0

此消息说明了所有内容:您的WpglViewController没有实现方法“title”,也许您忘了@synthesize .m文件中的属性?

答案 2 :(得分:0)

检查[WpglViewController title]显然问题出在这里,也许你在同一类的init内调用此方法。

答案 3 :(得分:0)

确保WpglViewController继承自UIViewController

答案 4 :(得分:-2)

要么没有像WpglViewController这样的类,要么你没有导入它,或者最不可能你没有用笔尖名称初始化它。 WpglViewController是一个类,你必须在另一个类中为initiliazation分配一个nib WpglViewController * firstViewController = [[WpglViewController alloc] initWithNibName:@“WpglViewController nib名称,这可能是WpglViewController,除非你改了它不要把eh .xib扩展名”] ;