加载一个外部视图控制器,从一个按钮点击另一个视图控制器

问题描述:

我现在正式使用objective-c和xcode恼火了。用PHP和Java编程更容易哈哈。加载一个外部视图控制器,从一个按钮点击另一个视图控制器

无论如何,我可以做一些帮助。

我已经创建了一个标签栏应用程序,其中包含三个用于iPhone的选项卡项目,其中一个项目加载了一个名为mapView的笔尖,其中包含一个用于加载另一个名为OverlayViewController的笔尖的按钮。

我一直在关注本教程this tutorial 创建一个摄像头覆盖。我明白它是如何工作的,但我不明白如何从按钮或直接从标签栏运行视图控制器。如果我在应用程序委托中启动应用程序的示例中加载它,我只能获得叠加层的工作。如果我尝试从标签栏项目加载它,我只会看到一个灰色屏幕,看起来像加载了空白视图控制器,代码没有运行以显示叠加层。

如果任何人都可以建议我如何从按钮点击加载覆盖,甚至直接从标签栏项目,我会非常感激。

谢谢亚历克斯

p.s. Heres the link to the project if you wish to view the files

@AlexApps我看了一下你的项目,并有几条反馈。

我觉得在你试图让OverlayViewController工作之前,你应该备份一下,给一些苹果文档一个阅读,尤其是View Controller Programming Guide。苹果文档大部分都写得很好,应该可以帮助你更好地理解视图和视图控制器,而不是你的代码中明显的。

另一个建议是从例如Beginning iPhone Programming这本书中免费获得一些可用的源代码,它有一个如何布置基于tabBarController的应用程序的好例子。我确信还有其他很好的示例,它们将向您展示如何组织视图和查看控制器以将它们加载到不同的选项卡中。

我认为,如果你遵循这个建议,当你根据你学到的东西重新组织你的应用程序时,你将不会有什么问题做你正在做的事情。

顺便说一句,你可能需要考虑使用NavigationViewController来处理你正在用OverlayViewController加载按钮按下的事情,但需要花几个小时,慢下来并做一些专注的阅读。它会造成一个不同的世界。那么如果你有更具体的问题,Stack Overflow(和Google)是你的朋友。

最后一个提示,你不需要将IBOutlet放在你的实例变量中,也不需要在你的属性中,只是一个或另一个,实际上,你甚至不需要实例变量。我通常只是使用属性的一切。在弗里斯特页

首次进口UIViewController类象下面这样:

#import "page2viewcontroller.h" 

下方按钮点击事件代码:

page2viewcontroller *page2 =[page2viewcontroller alloc] ; 
[self presentModalViewController:page2 animated:NO]; 
[page2 release]; 

回来后page2viewcontroller到page1viewcontroller一样象下面这样:

#import "page1viewcontroller.h" 

关于backbutton点击事件代码如下:

page1viewcontroller *page1 =[page2viewcontroller alloc] ; 
[self presentModalViewController:page1 animated:NO]; 
[page1 release]; 

就是这样......!

我已经完成了故事板,解决方案是在标签栏视图控制器和要加载的视图控制器之间创建一个segue,然后您必须为该segue添加一个标识符。最后,当按钮被按下,你必须把这个调用的方法:

[self performSegueWithIdentifier:@"segueId" sender:sender]; 

我已经把现在做它和它的作品完美!