加载外部视图控制器,从按钮单击另一个视图控制器
Posted
技术标签:
【中文标题】加载外部视图控制器,从按钮单击另一个视图控制器【英文标题】:Loading an external view controller, from a button click on another view controller 【发布时间】:2011-04-04 19:34:01 【问题描述】:我现在正式对 Objective-c 和 xcode 感到恼火。用 php 和 Java 编程就简单多了哈哈。
无论如何我都可以帮上忙。
我为 iPhone 创建了一个包含三个选项卡项的选项卡栏应用程序,在其中一个项上加载一个名为 mapView 的 nib,其中包含一个按钮,我想用它来加载另一个名为 OverlayViewController 的 nib。
我一直在关注这个教程this tutorial 创建相机叠加层。我了解它是如何工作的,但我不明白如何从按钮或直接从标签栏运行视图控制器。如果我像在应用程序委托中的应用程序启动示例中那样加载它,我只能让覆盖层工作。如果我尝试从标签栏项目加载它,我只会得到一个灰色屏幕,看起来像加载了空白视图控制器并且尚未运行代码来显示覆盖。
如果有人能建议我如何从按钮单击加载叠加层,甚至直接从标签栏项目加载,我将不胜感激。
谢谢亚历克斯
附言Heres the link to the project if you wish to view the files
【问题讨论】:
【参考方案1】:@AlexApps 我浏览了您的项目并收到了一些反馈。
我认为,在您尝试让 OverlayViewController 正常工作之前,您应该先备份一下并阅读一些 Apple 文档,尤其是 View Controller Programming Guide。 Apple 文档大部分都写得很好,应该可以帮助您更好地理解视图和视图控制器,而不是代码中明显的内容。
另一个建议是从诸如Beginning iPhone Programming 之类的书中获取一些免费提供的源代码,其中有一个很好的示例,说明了如何布置基于 tabBarController 的应用程序。我相信还有其他很好的示例可以向您展示如何组织视图和视图控制器以将它们加载到不同的选项卡中。
我认为,如果您遵循此建议,当您根据所学内容重构应用程序时,您在做您想做的事情时遇到的问题就会减少。
顺便说一句,您可能需要考虑使用 NavigationViewController 来尝试通过按下按钮加载 OverlayViewController 但需要几个小时,放慢速度并进行一些重点阅读。它将改变世界。如果您有更具体的问题,Stack Overflow(和 Google)是您的朋友。
最后一个提示,您不需要将 IBOutlet 放在实例变量和属性中,只需一个或另一个,实际上,您甚至根本不需要实例变量。我通常只对所有内容使用属性。
【讨论】:
【参考方案2】:我已经用故事板完成了它,解决方案是在标签栏视图控制器和您要加载的视图控制器之间创建一个转场,然后您必须为该转场添加一个标识符。最后,在按下按钮时调用的方法中,您必须输入:
[self performSegueWithIdentifier:@"segueId" sender:sender];
我现在已经完成了,效果很好!
【讨论】:
【参考方案3】:首先在第一个页面中导入 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];
就是这样......!
【讨论】:
以上是关于加载外部视图控制器,从按钮单击另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图