2013-02-11 25 views
0

我相对较新的iOS编程,并已为iPad的基于食谱的应用程序。我环顾了很多答案,似乎无法解决我的问题,因此生病解释我的应用程序是如何布置的。推送ViewController是“灰色”不能完好无损

导航器 - >视图控制器-Modal赛格瑞 - > PreviewViewController -modal赛格瑞 - >导航器 - > RecipeViewController

在我的RecipeViewController我有一个按钮,按下时,我希望它回到“家”用于这些目的的屏幕是“ViewController”。

下面是在“RecipeViewController”按钮动作的代码:

- (IBAction)homeB:(id)sender { 
ViewController* viewController = [[ViewController alloc]init]; 
[self.navigationController pushViewController:viewController animated:YES]; 
} 

然而,当我按下这个按钮时,显示的视图控制器,但屏幕是灰色的,我可以没有任何互动与屏幕。我无法发布屏幕外观的图像,因为我没有足够的声望,但是当我可以的时候我会更新它。

我尝试了其他方式来显示它,例如在按钮和“ViewController”之间的故事板中连接一个segue,然后在按下按钮时激活segue。但是这会弄乱我的代码的其他部分,因为我必须重新分配并初始化主屏幕。希望得到任何帮助,为什么它会出现无法与之互动的灰色屏幕。

也只是一些注意事项:按下按钮时

self.navigationController 

因此可以看出不回零,并没有错误显示。

感谢

+0

你可以发布ViewController类的代码吗?是以编程方式创建的,还是使用Interface Builder? – 2013-02-11 22:22:35

+0

你是否在故事板中制作了这个?这是你的结构:ViewController是导航控制器的根视图控制器。它为PreviewViewController做了一个模态,然后将另一个模式继承到另一个根视图控制器为RecipeViewController的导航控制器。是对的吗?你是否打算增加更多的控制器,因为如果你不是一个非常好的结构? – rdelmar 2013-02-11 23:18:58

回答

0

感谢大家的回复,我想通了,但我的问题。我的结构是错误的,我意识到我不需要有另一个导航控制器的食谱视图控制器,因为我没有从那里推动任何地方。所以柜面其他人有类似的问题我的结构如下内容:

导航控制器 - > - 视图 - 控制器-Modal Segue公司 - > PreviewViewController - ModalSegue - > RecipeViewController

我删除PreviewViewController和RecipeViewController之间的导航控制器。这意味着它们都是模态视图控制器。所以从RecipeViewController到主屏幕,这是“视图控制器”我只是需要解雇的用下面的代码模式的看法层次回来:

UIViewController * parent = self.presentingViewController; 
[parent.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

我回去两个阶段这样既PreviewViewController和RecipeViewController在哪里解雇。

现在很好用,谢谢大家的帮助。

0

这很难说没有看到的截图,但是从我的理解,如果你想回到主屏幕,你不应该推一个新视图控制器(除非你真的想?将其添加到堆栈)

要回到“家”屏幕上,你应该试试这个:

[self.navigationController popToViewController:viewController animated:YES]; 

,或者如果你的主屏幕是根,只需使用:

[self.navigationController popToRootViewControllerAnimated:YES]; 
2

如果你真的在做segues,那么我认为这是在故事板上制作的。如果是这样的话,那么你应该使用unwind segue来返回ViewController。您可以通过添加在视图控制器的IBAction为看起来像这样做:

-(IBAction)comingBackFromRecipe:(UIStoryboardSegue*)sender { 
    NSLog(@"I'm back"); 
} 

重要的一点是,发件人类型是UIStoryboardSegue。然后在IB中,在RecipeViewController中,控制从您的按钮拖动到控制器底部的绿色“退出”图标。当你放手的时候,你应该看到你在ViewController中编写的方法 - 将它连接到它。这会让你回到你开始使用的ViewController的同一个实例。

相关问题