Ошибка UINavigationController при сбое моего приложения - PullRequest
0 голосов
/ 04 сентября 2011

Я пробую свое первое приложение 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 ]

3 голосов
/ 04 сентября 2011

WpglViewController должен быть подклассом UIViewController.

Исключение говорит о том, что WpglViewController не отвечает на метод title, который он ожидает в UIViewController.

1 голос
/ 04 сентября 2011
2011-09-04 07:59:49.309 wpgl[7302:207] -[WpglViewController title]: unrecognized selector sent to instance 0x4b134c0

В этом сообщении говорится все: Ваш WpglViewController не реализует метод title, может быть, вы забыли @synthesize свойство в вашем файле .m?

0 голосов
/ 04 сентября 2011

Убедитесь, что ваш WpglViewController унаследован от UIViewController.

0 голосов
/ 04 сентября 2011

Проверьте [WpglViewController title] очевидно, проблема здесь, возможно, вы вызываете этот метод внутри init того же класса.

0 голосов
/ 04 сентября 2011

либо такого класса, как WpglViewController, либо нет, либо вы его не импортировали, либо, скорее всего, вы не инициализировали его именем пера. WpglViewController - это класс, вы должны назначить кончик внутри инициализации внутри другого класса. WpglViewController * firstViewController = [[WpglViewController alloc] initWithNibName: @ "имя кончика WpglViewController, которое, вероятно, является расширением WpglViewController, если только вы его не изменили, не помещается в расширение. ;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...