IOS UINavigationController, pushViewController не работает - PullRequest
0 голосов
/ 15 декабря 2011

Добрый вечер,

В настоящее время у меня есть два UIViewController. Мой appDelegate выглядит так

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    struct CGRect rect = [[UIScreen mainScreen] bounds];
    rect.origin.x = rect.origin.y = 0.0f;

    _viewController = [[sandboxViewController alloc] init];

    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:_viewController];

    _window = [[UIWindow alloc] initWithFrame:rect];

    [_window makeKeyAndVisible];
    [_window addSubview:nc.view];

    return YES;
}

ViewController выглядит так:

    - (void)loadView {
        self.view = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
        self.view.backgroundColor = [UIColor whiteColor];
        self.navigationItem.title = @"Master View";
    }

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
        [infoButton addTarget:self action:@selector(switchView:) forControlEvents:UIControlEventTouchUpInside];
        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
    }

    - (void)switchView:(id)obj {
        if(![self navigationController])
            NSLog(@"navigationController IS NIL!!!");
        if(!_secondView) 
            _secondView = [[secondViewController alloc] init];
        [self.navigationController pushViewController:_secondView animated:YES];
}

Нажав на кнопку информации, которая была добавлена ​​справа на панели навигации, я хочу переключиться на второй вид. Это, однако, не происходит, потому что навигационный контроллер регистрирует как ноль! Что мне здесь не хватает?

Любая помощь действительно ценится!

1 Ответ

1 голос
/ 15 декабря 2011

Вам не нужно создавать окно, оно уже должно существовать.

//_window = [[UIWindow alloc] initWithFrame:rect]; //remove this line    
[self.window makeKeyAndVisible]; //use the ivar
[self.window addSubview:nc.view];
...