EXC_BAD_ACCESS при добавлении UINavigationController в окно - PullRequest
0 голосов
/ 30 мая 2011

Я работаю над приложением, использующим несколько контроллеров представления и контроллер навигации.Когда приложение запускается и выполняет следующий код, оно выдает исключение при попытке добавить вложенное представление.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [self.window addSubview:[navigationController view]];
    [self.window makeKeyAndVisible];
}

Я объявляю контроллер навигации следующим образом:

@interface SimpleContactsAppDelegate : NSObject <UIApplicationDelegate> {
    NSManagedObjectModel *managedObjectModel;
    NSManagedObjectContext *managedObjectContext;
    NSPersistentStoreCoordinator *persistentStoreCoordinator;

    UIWindow *window;  
    UINavigationController *navigationController;
    // view for adding new contacts
    UIViewController *newContactView;
    UIButton *addButton;

    // controls for the addContactView
    UIButton *saveContactButton;
    UITextField *nameField;
    UITextField *emailField;
    UITextField *phoneField;

    UITableView *contactsTable;
}
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;  
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;  
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;

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

@property (nonatomic, retain) IBOutlet UIButton *addButton;
@property (nonatomic, retain) IBOutlet UITableView *contactsTable;

// controller and fields for the form
@property (nonatomic, retain) IBOutlet UIViewController *newContactView;
@property (nonatomic, retain) IBOutlet UITextField *nameField;
@property (nonatomic, retain) IBOutlet UITextField *emailField;
@property (nonatomic, retain) IBOutlet UITextField *phoneField;
@property (nonatomic, retain) IBOutlet UIButton *saveContactButton;

У меня естьподключил навигационный контроллер к объекту Delegate в XIB.Не стесняйтесь взглянуть на мой полный источник: https://github.com/agmcleod/SimpleContacts/tree/parttwo

Я пытался использовать инструменты с NSZombie, но, похоже, он не останавливается и не позволяет мне проверить, что именно пошло не так.Он также иногда продолжает работать и не прекращается.Я вынужден был выйти из него с помощью активного терминала.

1 Ответ

3 голосов
/ 30 мая 2011

Прежде всего, вы объявляете свойство, но обращаетесь к UINavigationController через его переменную экземпляра вместо использования свойства.

Используйте это:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [self.window addSubview:[self.navigationController view]];
    [self.window makeKeyAndVisible];
    return YES;
}

Во-вторых, вы изменили имявашего основного файла пера "Window.xib".Вы должны либо изменить его обратно на «MainWindow.xib», либо отредактировать свой SimpleContacts-Info.plist и изменить значение «Основное имя файла основного пера» на «Окно».

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