我是iOS开发的新手,我使用parse.com作为我的后端。 我想从 [查看控制器2] 导航到 [查看控制器3] 但是行不通。 这是代码 http://i.stack.imgur.com/t6zZg.jpg
NSString *username = [self.usernameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *password = [self.passwordField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *email = [self.emailField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([username length] == 0 || [password length] == 0 || [email length] == 0){
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Oops!" message:@"Make sure you enter a username, password , and email address!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show]; // This help to show your message successfully!
}
else {
PFUser *newUser = [PFUser user]; // This is a method to create new users
newUser.username = username;
newUser.password = password;
newUser.email = email;
[newUser signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (error) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sorry!" message:[error.userInfo objectForKey:@"error"] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alertView show];
}
else {
[self.navigationController popToViewController:_profilePhotoViewController animated:YES];
}
}];
}
}
答案 0 :(得分:0)
根据您发布的图像,在显示VC2
之前,VC3不会显示也不会被推送到控制器此方法popToViewController:animated:
要求控制器显示在控制器堆栈之前和控制器堆栈中,以便将堆栈弹回到它
你可以通过pop到root来实现你想要的,然后推送你的视图
[self.navigationController popToRootViewControllerAnimated:NO];
[self.navigationController pushViewController:_profilePhotoViewController animated:YES];
确保在推送之前分配_profilePhotoViewController
<强>更新强>
在你的故事板中为你的VC3设置一个标识符,例如“VC3Identifier”
您可以执行此操作,如下图所示
然后您需要分配此控制器的新实例并将其添加到导航控制器
YourController *vc3 = [self.storyboard instantiateViewControllerWithIdentifier:@"VC3Identifier"];
[self.navigationController setViewControllers:@[vc3] animated:YES];
答案 1 :(得分:0)
好吧,好吧,我不完全确定您的代码是如何工作的,以及什么会触发View的更改,但是在您调用此代码的代码中:
[self.navigationController popToViewController:_profilePhotoViewController animated:YES];
你需要处理什么(假设profilePhotoViewController是VC3)。
转到故事板并按住Ctrl键并从显示视图(您开始的VC)中拖动,最后到VC 3. VC 3应亮起蓝色。放手,你会看到一个下拉菜单。选择“推送”。这将为您创建一个过渡的segue。接下来你需要给它一个标识符,所以点击刚刚制作的segue并转到Attributes Inspector并在“ProfilePictureSegue”中输入“Identifier”字段,然后按enter键(或返回)。
然后转到包含您发布的代码的文件并替换
[self.navigationController popToViewController:_profilePhotoViewController animated:YES];
使用:
[self performSegueWithIdentifier:@"ProfilePictureSegue"];
鲍勃是你的叔叔。跑吧。
修改强> 我再次看了你的照片,看起来你的VC3在错误的地方。创建从VC2到VC 3的segue,而不是从导航控制器到VC3。如上所述,在VC2 .m文件中调用segue,它将在。之间转换。
如果您需要更多explanations。