我正在创建一个目前有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

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];
}

viewcontroller1中的我的按钮方法:
- (IBAction)SessionNickNameSubmit:(id)sender {
    ViewController2 *secondViewCtrl = [[ViewController2 alloc] initWithNibName:@"secondViewCtrl" bundle:nil];

    [self.navigationController pushViewController:secondViewCtrl animated:YES];
}

但是当我单击按钮时,视图不会改变。我尝试调试,但代码未命中,但没有任何反应。

我在某处缺少设置吗?

更新

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

而不是ViewController1/2我正在使用mainViewCtrlsecondViewCtrl
但仍然没有用:(

最佳答案

您输入错误:

它的

_window.rootViewController = _navigationController;


_window.rootViewController = _joinViewController;

NeverHopeless的建议也很明显。这可能是拼写错误,也是事实,您将第二个viewcontroller添加为ViewController2而不使用适当的变量名。

另一个建议是制作一个情节提要(如果您不使用它),并为过渡添加一个segue。只需将按钮处理分配给按钮即可。像这样:
-(IBAction)SessionNicknameSubmit:(id)sender
{
    [self performSegueWithIdentifier:@"identifier" sender:self ];
}

Here很好地描述了它的工作方式和使用方法,以及一些有用的指针!

09-30 21:25