使用[[UIApplication sharedApplication]委托时]

时间:2010-11-25 13:07:53

标签: iphone delegates uiapplicationdelegate pushviewcontroller

我不知道何时或为何要使用[[UIApplication sharedApplication] delegate]

我在[self.navigationController pushViewController:myView Animation:YES]无法导航时使用委托。我制作MyView *delegate = [[UIApplication sharedApplication] delegate][delegate pushViewController:myView Animation:YES]以使导航正常工作。

我不知道解决方案是否正确,此外我不知道[[UIApplication sharedApplication] delegate]的用途是什么,或者它对应用程序有什么影响。

有人可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:22)

[[UIApplication sharedApplication] delegate]会为您提供指向您的应用代理的指针。在制作项目时自动创建的那个。通常它的名称为YourAppNameAppDelegate

你的代码有两点不对。

  1. 当您声明MyView *delegate时,这应该是id delegateYourAppNameAppDelegate *delegate

  2. 您不必通过app delegate访问navigationController。我会调查为什么self.navigationController失败,并解决这个问题。当你依赖app委托时,你基本上是在实现单例模式。因为单例模式是最不酷的编程设计模式,所以在与其他程序员交谈时,它不会赢得任何积分。

答案 1 :(得分:5)

self.appDelegate = [[UIApplication sharedApplication] delegate];

当你在你的IVars中创建一个名为appDelegate的变量时,它不会自动设置为app delegate - 你必须自己设置它。在应用程序的任何地方,您可以通过应用程序单例访问代理。

[UIApplication sharedApplication]< ---允许访问单身人士

delegate方法返回指向app delegate的指针。

因此,由于您的变量需要初始化,因此有两个逻辑位置可以执行 - 一个位于初始化程序中,如果您创建一个或在一个方法中,在接近视图使用开始时调用它控制器和那个地方在viewDidLoad。