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

我在 [self.navigationController pushViewController:myView Animation:YES] 没有导航。我做 MyView *delegate = [[UIApplication sharedApplication] delegate][delegate pushViewController:myView Animation:YES] 使导航正常工作。

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

有人能帮我吗?

谢谢!!

有帮助吗?

解决方案

[[UIApplication sharedApplication] delegate] 会给你一个指针 您的 应用委托。制作项目时会自动创建的一个。通常是命名的 YourAppNameAppDelegate.

您的代码有两个问题。

  1. 当您声明时 MyView *delegate 这要么应该是 id delegate 或者 YourAppNameAppDelegate *delegate.

  2. 您不必通过应用程序委托访问您的导航控制器。我会研究为什么self.navigationController失败,并解决这个问题。当您依靠应用程序委托时,您基本上正在实现单例模式。由于单身图案是最不酷的编程设计模式,因此在与其他程序员交谈时,它不会赢得您的任何积分。

其他提示

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

当您在IVARS中创建一个称为AppDelegate的变量时,它不仅可以自动设置为App委托 - 您必须自己设置。从应用程序中的任何地方,您可以通过应用程序Singleton访问代表。

[UIApplication sharedApplication] <---给访问单例

委托方法返回指向应用程序委托的指针。

因此,由于您需要初始化您的变量,因此有两个逻辑的地方可以做到 - 如果创建一个或在使用视图及其控制器开始时,则在初始化器中进行了两个逻辑位置,则在初始化器中进行。位置在ViewDidload中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top