通过按钮单击另一个视图控制器来加载外部视图控制器

时间:2011-04-04 19:34:01

标签: iphone xcode uiviewcontroller camera

我现在正式对Objective-c和xcode感到恼火。用PHP和Java编程是非常容易的哈哈。

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

我创建了一个标签栏应用程序,其中包含三个用于iPhone的标签项,其中一个项目加载了一个名为mapView的标记,其中包含一个按钮,我想用它来加载另一个名为OverlayViewController的标记。

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

如果有人可以建议我如何从按钮点击加载叠加层,或者甚至直接从标签栏项目我会非常感激。

谢谢Alex

P.S。 Heres the link to the project if you wish to view the files

3 个答案:

答案 0 :(得分:0)

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

我认为在你试图让OverlayViewController工作之前,你应该稍微备份并给一些Apple文档读取,特别是View Controller Programming Guide。 Apple文档在很大程度上写得很好,应该可以帮助您更好地理解视图和查看控制器,而不是代码中明显的内容。

另一个建议是从一本书中获取一些免费提供的源代码,例如Beginning iPhone Programming,它有一个如何布局基于tabBarController的app的好例子。我相信还有其他好的示例,它们将向您展示如何组织您的视图并查看控制器以将它们加载到不同的选项卡中。

我认为,如果您遵循这一建议,那么当您通过所学内容对您的应用进行重组时,您将无法按照自己的意愿去做。

顺便说一下,您可能需要考虑使用NavigationViewController来处理按下按钮加载OverlayViewController但要花几个小时,慢下来并做一些有针对性的阅读。它将创造一个与众不同的世界。如果您有更具体的问题,Stack Overflow(和Google)就是您的朋友。

最后一个提示,你不需要将IBOutlet放在你的实例变量和你的属性中,只需要将其中一个放入,实际上,你甚至根本不需要实例变量。我通常只使用属性。

答案 1 :(得分:0)

首先在frist页面中导入uiviewcontroller类,如下所示:

#import "page2viewcontroller.h"

点击下面的按钮点击事件代码:

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

将page2viewcontroller返回到page1viewcontroller之后,如下所示:

 #import "page1viewcontroller.h"

点击后面的按钮点击事件代码:

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

这就是......!

答案 2 :(得分:0)

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

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

我现在已经做到了,它完美无缺!