导航控制器pushViewController无法正常工作

dux*_*x-- 1 objective-c uinavigationcontroller ios

我正在创建一个目前有2个主视图控制器的应用程序.应用程序加载到初始viewController中,单击里面的按钮应该调出第二个viewController.这就是我所拥有的:

AppDelegate.h

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

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController1 *mainViewCtr;
@property (strong, nonatomic) UINavigationController *navigationController;
@end
Run Code Online (Sandbox Code Playgroud)

AppDelegate.m

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    _mainViewCtr = [[ViewController1 alloc] initWithNibName:@"mainViewCtr" bundle:nil];
    _navigationController = [[UINavigationController alloc] initWithRootViewController:_mainViewCtr];
    _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    _window.rootViewController = _navigationController;
    _navigationController.delegate = self;
    _navigationController.navigationBarHidden = YES;
    [_window addSubview:_navigationController.view];
    [self.window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)

和我的按钮方法里面viewcontroller1:

- (IBAction)SessionNickNameSubmit:(id)sender {
    ViewController2 *secondViewCtrl = [[ViewController2 alloc] initWithNibName:@"secondViewCtrl" bundle:nil];

    [self.navigationController pushViewController:secondViewCtrl animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

但是当我点击按钮时,视图不会改变.我试过调试并且代码被命中,但没有任何反应.

我在某个地方错过了一个设置吗?

UPDATE

我已经更新了所有viewController变量名:

而不是ViewController1/2我正在使用mainViewCtrlsecondViewCtrl

但仍然没有用:(

Joz*_*oze 5

你弄错了:

它的

_window.rootViewController = _navigationController;
Run Code Online (Sandbox Code Playgroud)

_window.rootViewController = _joinViewController;
Run Code Online (Sandbox Code Playgroud)

并且NeverHopeless的建议也是正确的.它可能是拼写错误和你加你的第二个事实viewcontrollerViewController2,并没有使用正确的变量名.

另一个建议是制作一个故事板(如果你没有使用故事板)并为过渡添加一个segue.只需将segue处理分配给按钮即可.像这样:

-(IBAction)SessionNicknameSubmit:(id)sender
{
    [self performSegueWithIdentifier:@"identifier" sender:self ];
}
Run Code Online (Sandbox Code Playgroud)

这里有一个很好的描述它是如何工作的以及如何使用它以及一些有用的指针!