我不知道何时或为何要使用[[UIApplication sharedApplication] delegate]
我在[self.navigationController pushViewController:myView Animation:YES]
无法导航时使用委托。我制作MyView *delegate = [[UIApplication sharedApplication] delegate]
和[delegate pushViewController:myView Animation:YES]
以使导航正常工作。
我不知道解决方案是否正确,此外我不知道[[UIApplication sharedApplication] delegate]
的用途是什么,或者它对应用程序有什么影响。
有人可以帮助我吗?
谢谢!
答案 0 :(得分:22)
[[UIApplication sharedApplication] delegate]
会为您提供指向您的应用代理的指针。在制作项目时自动创建的那个。通常它的名称为YourAppNameAppDelegate
。
你的代码有两点不对。
当您声明MyView *delegate
时,这应该是id delegate
或YourAppNameAppDelegate *delegate
。
您不必通过app delegate访问navigationController。我会调查为什么self.navigationController失败,并解决这个问题。当你依赖app委托时,你基本上是在实现单例模式。因为单例模式是最不酷的编程设计模式,所以在与其他程序员交谈时,它不会赢得任何积分。
答案 1 :(得分:5)
self.appDelegate = [[UIApplication sharedApplication] delegate];
当你在你的IVars中创建一个名为appDelegate的变量时,它不会自动设置为app delegate - 你必须自己设置它。在应用程序的任何地方,您可以通过应用程序单例访问代理。
[UIApplication sharedApplication]
< ---允许访问单身人士
delegate方法返回指向app delegate的指针。
因此,由于您的变量需要初始化,因此有两个逻辑位置可以执行 - 一个位于初始化程序中,如果您创建一个或在一个方法中,在接近视图使用开始时调用它控制器和那个地方在viewDidLoad。