首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >引用AppDelegate方法- iphone

引用AppDelegate方法- iphone
EN

Stack Overflow用户
提问于 2009-05-12 03:47:04
回答 3查看 36.7K关注 0票数 15

我有一个有3个视图的AppDelegate。我把这三个加起来

代码语言:javascript
复制
[window addSubview:gameViewController.view];
[window addSubview:viewSettings.view];
[window addSubview:viewController.view];
[window makeKeyAndVisible];

在应用程序委托中,我有一些方法可以通过调用

代码语言:javascript
复制
[window bringSubviewToFront:gameViewController.view]; 

当我在viewController内部时,我使用

代码语言:javascript
复制
pinkAppDelegate *appDelegate=  (pinkAppDelegate *)[[UIApplication sharedApplication] delegate];

[appDelegate switchToSettings];

把我的subviews...so切换得这么好。

但是,当我在我的viewSetting UIViewController中执行同样的appDelegate调用时,它阻塞了,好像它不知道如何调用appDelegate方法。

我把所有的视图都挂接到我的主窗口xib中,但是我不明白为什么我不能遍历主应用程序委托中的方法

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-12 05:17:07

在viewController内部,您正在设置一个名为appDelegate的本地变量,该变量指向您的应用程序委托。这就是这行代码的作用:

代码语言:javascript
复制
pinkAppDelegate *appDelegate= (pinkAppDelegate *)[[UIApplication sharedApplication] delegate];

这个变量是viewController的本地变量,所以您不能在设置视图控制器中使用它。您需要在那里设置另一个变量。

或者,在你的应用程序中使用这个漂亮的#define。(您需要将其放在一个.h头文件中,该文件包含在项目中的每个文件中。)

代码语言:javascript
复制
#define myAppDelegate (MyAppDelegate *)[[UIApplication sharedApplication] delegate]

然后,您可以在任何位置执行以下操作:

代码语言:javascript
复制
[myAppDelegate doSomething];
票数 28
EN

Stack Overflow用户

发布于 2010-10-07 07:09:29

作为参考,上面仍然有一个拼写错误,我还有另一个帮助避免每次都必须投射的警告。如果您使用:

代码语言:javascript
复制
#import "MyAppDelegate.h"
#define myAppDelegate (MyAppDelegate *) [[UIApplication sharedApplication] delegate]

我将上面的代码放在一个常量.h中,然后可以使用

代码语言:javascript
复制
[myAppDelegate doSomething];

导入constants.h的任何位置

票数 10
EN

Stack Overflow用户

发布于 2010-08-23 14:29:42

简的答案中有一个打字错误。

在每个类中导入的头文件(例如,fines.h)中使用以下行:

代码语言:javascript
复制
#define myAppDelegate [[UIApplication sharedApplication] delegate]

您也可以在前缀头文件中使用这一行-这是一种在任何地方访问它的简单方法。

然后,在任何方法中,您都可以使用以下任何一种方法:

代码语言:javascript
复制
[myAppDelegate doSomething]; 
 myAppDelegate.property=value;
 myAppDelegate.childClassOfMyAppDelegate.property=value;
[myAppDelegate.ChildOfMyAppDelegate doSomething]; 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/851054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档