I am trying my first UINavigationController app and it is now crashing. If I comment out the line that starts with navController, I don't crash, but if course the app doesn't work either.
(Note: My environment is IOS 4.2 and 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;
}
Here is the crash information. Can someone point me in the right direction? Thanks for the help.
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'
In my WpglViewController.h file I have the following declared:
@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
and in my WpglViewController I have the following declared:
#import "WpglViewController.h"
@implementation WpglViewController
@synthesize servingsLabel;
@synthesize quantityLabel;
@synthesize navigationController;
WpglViewController needs to be a subclass of UIViewController.
The exception says that WpglViewController doesn't respond to the title method which it expects in a UIViewController.
2011-09-04 07:59:49.309 wpgl[7302:207] -[WpglViewController title]: unrecognized selector sent to instance 0x4b134c0
This message says everything: Your WpglViewController does not implement the method "title", maybe you forgot to @synthesize the property in your .m file?
Check [WpglViewController title]
apparently the problem is here, maybe you are calling this method inside the init
of the same class.
Make sure your WpglViewController
is inherited from UIViewController
.
either there is no such class as WpglViewController or you havent imported it OR MOST LIKELY you didnt initiliaze it with a nib name. WpglViewController is a class, you have to assign a nib inside initiliazation within another class WpglViewController *firstViewController = [[WpglViewController alloc] initWithNibName:@"the WpglViewController nib name which is probably WpglViewController unless you changed it do not put eh .xib extension"];
精彩评论