由于我对IOS开发很陌生,我并不真正了解开发iPhone应用程序时要使用的所有机制。
在这里,我要做的是在执行segue之后调用另一个控制器。
背景信息:
我有我的第一页,它基本上是一个登录页面,带有用户/密码系统。我创建了一个segue,通过单击Submit按钮调用它。这是代码:
- (IBAction)Connect:(UIButton *)sender
{
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"passwordsample", @"usernamesample",
nil];
if ((![[dict allKeys] containsObject:TFLogin.text])) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Login or password incorrect" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
NSLog(@"Connection Not OK");
}
else {
[self performSegueWithIdentifier:@"LoginSegue" sender:sender];
NSLog(@"Connection OK");
}
}
这是prepareForSegue函数:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
HomeController *home = (HomeController *) segue.destinationViewController;
home.sentLogin = TFLogin.text;
}
事实是,当我点击“提交”按钮(在登录页面上)时,日志会显示用户被正确找到,然后我收到如下错误:
2012-04-30 11:24:44.630 AppName[1066:f803] -[UINavigationController setSentLogin:]: unrecognized selector sent to instance 0x6d73c30
2012-04-30 11:24:44.630 AppName[1066:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setSentLogin:]: unrecognized selector sent to instance 0x6d73c30'
这是故事板:
第二个NavigationController将替换为Tab Bar Controller。但是对于一些测试,我已经把这个。
有人可以指导我,告诉我我做错了什么和/或向我发送一些关于故事板和导航的最新指南吗?
非常感谢!
答案 0 :(得分:0)
通过错误的外观,似乎segue.destinationViewController不是你想象的那样。听起来你有混合导航控制器。
如果没有你的故事板,诊断有点困难,但尝试:
UINavigationController *nav = (UINavigationController*)segue.destinationViewController;
HomeController *home = (HomeController*)nav.topViewController;
如果这不起作用,您可能需要在第二行放置断点并查看nab控制器以查看HomeController在其堆栈中的位置。
答案 1 :(得分:0)
ProjectManagementViewController * projectManagementView = [[ProjectManagementViewController alloc] initWithNibName:@“ProjectManagementViewController”bundle:nil];
[self.navigationController pushViewController:projectManagementView animated:NO];
答案 2 :(得分:0)
你可以像在ios5中那样做:
[self performSegueWithIdentifier:@"your-segue-name" sender:self];
你将从你的一个视图到另一个视图创建一个segue,但不是通过按钮或其他任何东西,只需从第一个视图拖动到第二个视图你的segue,当你的过程完成时只需调用上面的代码。
希望这会有所帮助..
编辑:您需要在故事板中为您的segue命名,只需单击它然后在右侧检查员中命名即可。