UINavigationController отображает неправильное представление - PullRequest
1 голос
/ 12 октября 2011

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

Я начал с создания Window Based Application в Xcode 4, которое дало мне следующие файлы: spellingAppDelegate.h, spellingAppDelegate.m и MainWindows.xib. Затем я добавил новый подкласс UIViewController и назвал его gameViewController.

Ниже приведен мой код для myAppDelegate.h

#import <UIKit/UIKit.h>

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


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

@end

вот мой myAppDelegate.m

#import "spellingAppDelegate.h"
#import "gameViewController.h"
#import "resultViewController.h"

@implementation spellingAppDelegate

@synthesize window = window;
@synthesize navigationController = navigationController;


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

    // create the MyView controller instance:
    gameViewController *controller = [[gameViewController alloc] initWithNibName:@"gameViewController" bundle:nil];

    // set the title that appears in the navigation bar:
    [controller.navigationItem setTitle:@"Main View"];

    // create the Navigation Controller instance:
    UINavigationController *newnav = [[UINavigationController alloc] initWithRootViewController:controller];

    // set the navController property:
    [self setNavigationController:newnav];

    // release both controllers:
    [newnav release];
    [controller release];

    // add the Navigation Controller's view to the window:
    [window addSubview:[navigationController view]];

    return YES;
}

У меня сложилось впечатление, что если я запусту приведенный выше код, приложение запустится с gameViewController.xib. Тем не менее, его отображение MainWindow.xib. Я знаю, что, наверное, скучаю по чему-то простому, но не могу понять, что я сделал не так. Спасибо.

Ответы [ 3 ]

3 голосов
/ 12 октября 2011

Попробуйте это будет работать

    navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
   [self.window addSubview:navigationController.view];
   [self.window makeKeyAndVisible];
1 голос
/ 13 октября 2011

Окно приложения определено в nib-файле. Обычно это перо MainWindow.xib, хотя вы можете изменить его, отредактировав файл info.plist своего приложения.

Вы можете поместить ссылку на контроллер представления, который вы хотите загрузить при запуске, в этот наконечник (см. Шаблон приложения на основе представления), или вы можете использовать метод application:didFinishLaunchingWithOptions: в делегате приложения с тем же эффектом.

В iOS 4.0 и более поздних версиях я использовал бы свойство UIWindow rootViewController для добавления контроллера представления. Например:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ 
    // Override point for customization after application launch.

    AViewController * aViewController = [[AViewController alloc] initWithNibName:nil bundle:nil];
    self.window.rootViewController = aViewController;
    [aViewController release];

    [self.window makeKeyAndVisible];
    return YES;
}
1 голос
/ 12 октября 2011

если вы сделаете это таким образом, то оно будет работать

demoViewController *controller = [[demoViewController alloc] initWithNibName:@"demoViewController" bundle:nil];

// set the title that appears in the navigation bar:
[controller.navigationItem setTitle:@"Main View"];

// create the Navigation Controller instance:
UINavigationController *newnav = [[UINavigationController alloc] initWithRootViewController:controller];

// set the navController property:
//   [self setNavigationController:newnav];

[self.window addSubview:newnav.view];

// release both controllers:
[newnav release];
[controller release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...