我有一个简单的应用程序与2个屏幕。 当我按下一个按钮从第一个到第二个时,一切都成功执行(包括动画)。然而,当我点击第二个屏幕上的后退按钮,我得到以下警告:目的C:后退按钮继续不工作
Warning: Attempt to present <getTextViewController: 0x8f6aa30> on <SecondViewController: 0x946cc80> whose view is not in the window hierarchy!
编辑:请不要参考我关于上述警告的其他问题 - 我已经看到了这些,他们指其他事宜。
但是,它仍然切换回第一个屏幕。然而,segue的动画不能执行。 另外:当我返回到第一个屏幕时,第一个屏幕中的信息(如输入的文本)仍然保留,而第二个屏幕中的信息每次出现时均会重置。
这是我如何调用这两个操作:
守则getTextViewController.m(查看1):
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"F21"]){
UIViewController *v = [segue destinationViewController];
[self dismissViewControllerAnimated:NO completion:nil];
v = self;
}
}
-(void)performSegue:(NSString*)str{
[self performSegueWithIdentifier:str sender:self];
}
//In some other method:
[self performSegue:@"F21"];
守则SecondViewController.m(查看2):
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"F12"]){
UIViewController *v = [segue destinationViewController];
[self dismissViewControllerAnimated:NO completion:nil];
v = self;
}
}
-(void)performSegue:(NSString*)str{
[self performSegueWithIdentifier:str sender:self];
}
- (IBAction)goBack:(id)sender {
[self performSegue:@"F12"];
}
我非常感谢任何帮助,以理解为什么第一次继续工作,而第二次没有。
谢谢
院长
注:这里是整个项目 - https://github.com/dean13-meet/firstIOSApp 编辑:更新饭桶。
您的github项目缺少getTextViewController .h和.m文件。 – rdelmar
为什么你甚至需要一个后退?这个功能是内置的!你得到你的错误信息是因为你关闭了你的'SecondVC',然后尝试从那个被驳回的'VC'呈现一个新的'VC'。 – Marc
不要使用segue从第二个视图控制器返回第一个视图,并简单地使用您已经使用的[self dismissViewControllerAnimated:NO completion:nil]方法。 – nikhil84