Objective c 在iOS中切换视图
我尝试创建一个具有不同视图的应用程序。有两个视图,每个视图都有一个视图控制器。第一个视图通过AppDelegate类中的Objective c 在iOS中切换视图,objective-c,ios,uiview,uiviewcontroller,Objective C,Ios,Uiview,Uiviewcontroller,我尝试创建一个具有不同视图的应用程序。有两个视图,每个视图都有一个视图控制器。第一个视图通过AppDelegate类中的rootViewController加载。现在我想通过单击按钮加载另一个视图 我试图在我的第一个控制器中创建第二个视图控制器的实例,并使用pushViewController方法,但没有成功。项目已生成,但单击按钮后什么也没有发生。您必须将第一个viewController放入UINavigationController中,并将此navigationController设置为r
rootViewController
加载。现在我想通过单击按钮加载另一个视图
我试图在我的第一个控制器中创建第二个视图控制器的实例,并使用
pushViewController
方法,但没有成功。项目已生成,但单击按钮后什么也没有发生。您必须将第一个viewController放入UINavigationController
中,并将此navigationController设置为rootViewController
。然后,当您单击按钮时,呼叫(假设您在第一个控制器中):
您必须将第一个viewController放入
UINavigationController
中,并将此navigationController设置为rootViewController
。然后,当您单击按钮时,呼叫(假设您在第一个控制器中):
更新我的答案:
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
PasswordHandling *aPasswortHandler = [[PasswordHandling alloc] init];
self.passwordHandling = aPasswortHandler; [aPasswortHandler release];
UINavigationController *navigationController;
if ([passwordHandling passwordInKeyChain] == TRUE) {
LogInView *logInView = [[[LogInView alloc] initWithNibName: @"Log In View" bundle: nil] autorelease];
navigationController = [[UINavigationController alloc] initWithRootViewController:logInView];
//[navigationController pushViewController: logInView animated:NO];
} else {
CreateNewPasswordView *createNewPasswordView = [[CreateNewPasswordView alloc] initWithNibName:@"CreateNewPassword" bundle: nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:createNewPasswordView];
//[navigationController pushViewController: createNewPasswordView animated:NO];
}
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible]; return YES;
更新我的答案:
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
PasswordHandling *aPasswortHandler = [[PasswordHandling alloc] init];
self.passwordHandling = aPasswortHandler; [aPasswortHandler release];
UINavigationController *navigationController;
if ([passwordHandling passwordInKeyChain] == TRUE) {
LogInView *logInView = [[[LogInView alloc] initWithNibName: @"Log In View" bundle: nil] autorelease];
navigationController = [[UINavigationController alloc] initWithRootViewController:logInView];
//[navigationController pushViewController: logInView animated:NO];
} else {
CreateNewPasswordView *createNewPasswordView = [[CreateNewPasswordView alloc] initWithNibName:@"CreateNewPassword" bundle: nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:createNewPasswordView];
//[navigationController pushViewController: createNewPasswordView animated:NO];
}
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible]; return YES;
通过右键/控件单击按钮查看其连接弹出窗口,检查以确保视图按钮的目标/操作设置正确。通过右键/控件单击按钮查看其连接弹出窗口,检查以确保视图按钮的目标/操作设置正确。您是如何实例化第二个视图控制器的? 您可以发布相关代码吗?@vincent您需要在要推送的视图控制器类上alloc和initWithNibName。这个答案有一些优点:@nykash-谢谢,但我已经知道了?@vincent看到我下面的答案了。。。我提到的问题有一些例子。你是如何实例化第二个视图控制器的?您可以发布相关代码吗?@vincent您需要在要推送的视图控制器类上alloc和initWithNibName。这个答案有一些优点:@nykash-谢谢,但我已经知道了?@vincent看到我下面的答案了。。。我提到的问题有一些例子。这是我的appDelegate代码。PasswortHandler是一个与keychain
-(BOOL)应用程序通信的类:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{self.window=[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]autorelease];密码处理*aPasswortHandler=[[PasswordHandling alloc]init];self.passwordHandling=aPasswortHandler;[aPasswortHandler release];if([passwordHandling passwordInKeyChain]==TRUE){//Passwort in Keychain
LogInView*LogInView=[[LogInView alloc]initWithNibName:@“登录视图”捆绑包:nil]自动释放];[navigationController-pushViewController:logInView动画:否];}其他{CreateNewPasswordView*CreateNewPasswordView=[[CreateNewPasswordView alloc]initWithNibName:@“CreateNewPassword”捆绑:无];[navigationController-pushViewController:CreateNewPasswordView动画:否];}[self.window setRootViewController:navigationController];[self.window makeKeyAndVisible];返回YES;}
启动iPhone后,屏幕保持白色。怎么了?看不到所有代码。你能通过添加代码来更新你的问题吗?-忽略此注释,因为我无法删除它。它仍然应该全部使用此方法。这不是我的第一个问题。这是更改导航控制器导致的问题解决了。我想删除它这一行:self.window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen]bounds]]autorelease];
这是我的appDelegate代码。PasswortHandler是一个类,它与keychain-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项{self window通信[[[UIWindow alloc]initWithFrame:[UIScreen mainScreen]bounds]]autorelease];密码处理*aPasswortHandler=[PasswordHandling alloc]init];self.PasswordHandling=aPasswortHandler;[aPasswortHandler release];if([PasswordHandling passwordInKeyChain]==TRUE){//Passwort in Keychain
LogInView*LogInView=[[LogInView alloc]initWithNibName:@“登录视图”bundle:nil]autorelease];[navigationController pushView控制器:LogInView动画:NO];}其他{CreateNewPasswordView*CreateNewPasswordView=[[CreateNewPasswordView alloc]initWithNibName:@“CreateNewPassword”捆绑包:nil];[navigationController pushViewController:createNewPasswordView动画:否];}[self.window setRootViewController:navigationController];[self.window makeKeyAndVisible];返回YES;}
启动iPhone后,屏幕保持白色。怎么了?看不到所有代码。你能通过添加代码来更新你的问题吗?-忽略此注释,因为我无法删除它。它仍然应该全部使用此方法。这不是我的第一个问题。这是更改导航控制器导致的问题解决了。我想删除它此行:self.window=[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]autorelease];