2014-06-19 39 views
-1

我有一个简单的应用程序与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 编辑:更新饭桶。

+0

您的github项目缺少getTextViewController .h和.m文件。 – rdelmar

+0

为什么你甚至需要一个后退?这个功能是内置的!你得到你的错误信息是因为你关闭了你的'SecondVC',然后尝试从那个被驳回的'VC'呈现一个新的'VC'。 – Marc

+0

不要使用segue从第二个视图控制器返回第一个视图,并简单地使用您已经使用的[self dismissViewControllerAnimated:NO completion:nil]方法。 – nikhil84

回答

2

我不完全确定你想要在你的prepareForSegue中做什么,他们不需要在那里解雇VC。如果你想有一个简单的应用程序,你从VC1到VC2然后再回来,最好的办法是使用segueunwindSegue

因此,在故事板控件中,从VC1上的按钮拖动到VC2并选择您的segue类型。然后在VC1.m设置开卷SEGUE如:

- (IBAction)unwindFromViewController:(UIStoryboardSegue *)segue 
{ 
    //empty implementation 
} 

最后,从后退按钮您的VC2控制拖动到绿色的退出图标上VC2并选择您unwindFromViewController方法。

这应该做你想找的。

+0

这个工程!但是,它不保留在VC2中输入的信息---我在VC2中有一个标签,每次我重新输入该视图时,标签都会重置其值。是否有可能使VC2在退出时保持不变?换句话说,保持相同的对象引用? –