我是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)到第二个视图的简单方法,当我成功登录时,但我没有找到。现在我有了这个故事板:
https://www.dropbox.com/s/dc8h4u920wgt47s/Screenshot%202014-03-03%2011.36.56.png
View之间转换的代码是:
[self performSegueWithIdentifier:@"LoginSegue" sender:self];
结果是错误:
*由于未捕获的异常'NSGenericException'而终止应用,原因是:'无法找到segue的导航控制器'LoginSegue'。 Push segues只能在源控制器由UINavigationController实例管理时使用。
有什么问题?为什么我需要像“导航控制器”这样的东西。我需要为segue创建一个类吗?解决这个问题最简单的方法是什么?谢谢。
编辑-------解决方案
感谢所有人的帮助。我将导航控制器添加到我的应用程序作为初始视图我发现,使用自定义segue并为此自定义segue制作类是不必要的。解决我问题的最简单方法是连接ViewControllers(NOT BUTTON和第二个ViewController,所以我第一次使用它......)并命名push segue。我在代码中使用的名称:
- (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];
一切都很棒。当我使用正确的密码和用户名登录时,我被重定向到第二个视图。
答案 0 :(得分:1)
如果您不使用Modal
而不是UINavigationController
segue,则应使用Push
segue。
答案 1 :(得分:1)
错误告诉您在不使用导航控制器的情况下无法使用该类型的转换。
只需从右侧菜单中拖放导航控制器,然后将其设置为右侧属性部分中的Initial Controller
即可。像这样:
然后将您的登录控制器作为其root view controller
连接。那么这对你有用。
最终结果应该类似于:
答案 2 :(得分:0)
你可以做两件事,你很可能没有这样做。可能缺少导航控制器,它需要是根视图控制器。将导航控制器添加到项目实际上非常容易。 打开故事板并选择第一个视图,然后转到。
编辑器>嵌入>导航控制器
如果这不起作用,您可以实例化下一个视图控制器的对象,并在准备segue方法中执行显式的segue。
NextViewController *nvc = [segue destinationViewController];
要了解导航控制器按照此link
执行的操作答案 3 :(得分:0)
为了使用push segue,您的根视图控制器需要是导航控制器。没有像这样的“主”控制器可以使用的唯一segue是模态segue
答案 4 :(得分:0)
当你使用segues时,你的firstViewController应该在Navigation控制器下。如果您尚未在导航控制器中嵌入vc,则单击故事板中的VC并在xcode上单击
editor -> embed -> navigationController