Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在iOS中切换视图_Objective C_Ios_Uiview_Uiviewcontroller - Fatal编程技术网

Objective c 在iOS中切换视图

Objective c 在iOS中切换视图,objective-c,ios,uiview,uiviewcontroller,Objective C,Ios,Uiview,Uiviewcontroller,我尝试创建一个具有不同视图的应用程序。有两个视图,每个视图都有一个视图控制器。第一个视图通过AppDelegate类中的rootViewController加载。现在我想通过单击按钮加载另一个视图 我试图在我的第一个控制器中创建第二个视图控制器的实例,并使用pushViewController方法,但没有成功。项目已生成,但单击按钮后什么也没有发生。您必须将第一个viewController放入UINavigationController中,并将此navigationController设置为r

我尝试创建一个具有不同视图的应用程序。有两个视图,每个视图都有一个视图控制器。第一个视图通过AppDelegate类中的
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];