UINavigationController не отображается при запуске сборки - PullRequest
1 голос
/ 19 июня 2011

РЕДАКТИРОВАТЬ: Работа, см. Код ниже.

Работа над приложением, где прямо сейчас у меня есть класс AppDelegate и пользовательский класс UINavigationController.Код, который у меня есть сейчас, довольно прост, и я чувствую, что правильно настроил XIB.Сборка выполнена без ошибок.Но когда приложение запускается, навигационный контроллер не отображается.Я не вижу ни навигационную панель, ни табличное представление.Я вижу только пустой экран.Вот основная часть моего кода:

//
//  FTPPhotosAppDelegate.h
//  FTPPhotos
//
//  Created by Aaron McLeod on 11-05-30.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "RootViewController.h"

@interface FTPPhotosAppDelegate : NSObject <UIApplicationDelegate> {
    UINavigationController *navigationController;
    RootViewController *rootViewController;
}

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

@property (nonatomic, retain) RootViewController *rootViewController;

@end


//
//  FTPPhotosAppDelegate.m
//  FTPPhotos
//
//  Created by Aaron McLeod on 11-05-30.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "FTPPhotosAppDelegate.h"

@implementation FTPPhotosAppDelegate


@synthesize window=_window;

    @synthesize navigationController, rootViewController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    navigationController = [[UINavigationController alloc] init];

    rootViewController = [[RootViewController alloc] init];
    [self.navigationController pushViewController:rootViewController animated:NO];
    [self.window addSubview:[self.navigationController view]];    
    [self.window makeKeyAndVisible];
    return YES;
}


@interface RootViewController : UITableViewController<UIImagePickerControllerDelegate> {
    NSMutableArray *photos;
    UIImagePickerController *picker;
    UIBarButtonItem *addPhotoButton;
}

@property (nonatomic, retain) NSMutableArray *photos;
@property (nonatomic, retain) UIImagePickerController *picker;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *addPhotoButton;

- (void) loadPhotos;
- (IBAction) addPhoto;
- (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;
@end


#import "RootViewController.h"

@implementation RootViewController
@synthesize photos, picker, addPhotoButton;

- (void)viewDidLoad
{
    self.photos = [[NSMutableArray alloc] initWithCapacity:50];
    [self loadPhotos];
    [super viewDidLoad];
}

Есть идеи?Вот скриншот из XIB,

http://img148.imageshack.us/img148/189/nib.png.

Дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 2 ]

0 голосов
/ 19 июня 2011

Вместо корневого контроллера View, сделайте его UINavigationController *navigationController.

, затем в applicationDidFinishLaunching, скажем,

navigationController = [[UINavigationController alloc]init];
FirstViewController *firstView = [FirstViewController alloc]init];
[self pushViewController:firstView animated:NO];
firstView.title = @"TITLE";
[self addSubview:navigationController.view];

EDIT: пример кода, который я имею в приложениишахты

AppDelegate.h

#import <UIKit/UIKit.h>

@interface DragonAge2AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *navigationController;
}

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

@end

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
TitleClass *titlePage = [[TitleClass alloc]init];

navigationController = [[UINavigationController alloc]init];
titlePage.title = @"Dragon Age 2";
[navigationController pushViewController:titlePage animated:NO];
[titlePage release];

// Override point for customization after application launch.
[window addSubview:navigationController.view];
[self.window makeKeyAndVisible];

return YES;
}
0 голосов
/ 19 июня 2011

Вам нужно проверить некоторые пункты:

  • Выполняется ли код в application:didFinishLaunchingWithOptions: при запуске приложения? Добавьте NSLog(@"app launched") в этот код или установите точку останова для его проверки. Если он не вызывается, ваш FTPPhotosAppDelegate объект, вероятно, не установлен как делегат вашего UIApplication синглтона в XIB (это соединение должно быть сделано по умолчанию, если вы создали свое приложение с использованием стандартного шаблона, но оно того стоит проверка)
  • Правильно ли подключен navigationController IBOutlet вашего AppDelegate к вашему фактическому UINavigationController в XIB? Проверьте (используя NSLog или точку останова), что это не nil.
  • То же самое для вида IBOutlet объекта UINavigationController в вашем XIB: проверьте, правильно ли он подключен, а не nil.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...