我有一个项目,我在维护导航控制器(我通过界面构建器添加)时遇到了问题。我想建立一个层次结构,因为它说视图没有添加到窗口层次结构中。我可以使用performSegueWithIdentifier在一个视图之间移动,但第二次使用它不起作用。问题是它不允许我从一个视图移动到另一个视图。我已经阅读了关于搞乱appdelegate或添加performForSegue的内容,但我不知道如何使用它。
如果我有三个视图连接的任何建议,如1 - > 2 - > 3? 1和2将具有performSegueWithIdentifier。
拜托,谢谢!
这是我的故事板: http://s1370.photobucket.com/user/sean_cleveland1/media/Untitled_zpsc9022523.png.html?o=0
这是我的performSegueWithIdentifier函数:
//Used in FirstVC.
[self performSegueWithIdentifier: @"firstToSecond" sender: self];
//Used in SecondVC... this doesn't work!
[self performSegueWithIdentifier: @"secondToThird" sender: self];
答案 0 :(得分:2)
只需控制+从“弹出到主屏幕” UIButton
拖动到退出(场景底部的绿色按钮)
选择在第一个屏幕中声明的标题为“Main”的展开方法
e.g。
-(IBAction)customUnwind:(UIStoryboardSegue *)sender
{
NSLog(@"Unwind successful");
}
答案 1 :(得分:1)
首先定义您的第三个视图标识符
- (void)segue
{
[self performSegueWithIdentifier:@"mySegue" sender:self];
}
仅对任何条件或操作使用以下方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([[segue identifier] isEqualToString:@"mySegue"]) {
}
}
我为你创建了简单的示例项目
https://github.com/iDevAndroid/NavigationSample
试试这个。因为你在下一行之后执行模型交易你正在使用解雇模型。
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
[self becomeFirstResponder];
[self dismissViewControllerAnimated:YES completion:^{
[self emailDelivaryedSuccessfully];
];
}
-(void)emailDelivaryedSuccessfully{
[self performSegueWithIdentifier: @"secondToThird" sender: self];
}
答案 2 :(得分:0)
如果您在Storyboard中执行此操作,则无需使用performSegueWithIdentifier:
,只需在代码中注明代码performSegueWithIdentifier:
和prepareForSegue:
并尝试使用。
如果您使用的是performSegueWithIdentifier:
,那么您还需要实施prepareForSegue:
方法。
恩。
[self performSegueWithIdentifier: @"firstToSecond" sender: self];
// prepareforsegue method
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([[segue identifier] isEqualToString:@"firstToSecond"]) {
SecondViewController *destinationController = [segue destinationViewController];
//set data if any
}
}