iOS - 从ViewController调用AppDelegate方法

252
我想做的是点击一个按钮(通过代码创建)后,它会调用不同的视图控制器,然后在新的视图控制器中运行一个函数。
我知道这在IB(Interface Builder即Xcode中的可视化界面编辑器)中可能很容易实现,但那不是一个选项。
一个例子就是你有两个视图控制器,一个带有一个房屋的启动画面。另一个视图控制器包含了一个房屋的漫游,你可以按照预定顺序进入所有房间。启动画面将为每个房间提供按钮,让你可以跳转到漫游过程的任何点。
13个回答

3
你可以在项目的Prefix.pch文件中添加#define uAppDelegate(AppDelegate *)[[UIApplication sharedApplication] delegate],然后使用以下代码在任何UIViewController中调用你的AppDelegate的任何方法。
[uAppDelegate showLoginView];

1
在2020年,iOS13,xCode 11.3中,Objective-C的工作方式是:

#import "AppDelegate.h"

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

它对我有效,希望对你也有同样的效果! :D


0
即使从技术上可行,也不是一个好的方法。 当您说:“启动画面将有每个房间的按钮,允许您跳转到漫游的任何点。” 所以您想通过appdelegate传递调用这些控制器,通过按钮上的tohc事件吗?
这种方法不遵循苹果的指南,并且有很多缺点。

看一下问题的日期...那是在Interface Builder还是一个独立的应用程序,开发也是一种非常不同的东西的时候。我已经多年没有接触iOS开发了,所以我无法评估更现代的答案。 - Mytheral
它可能是...但我的考虑仍然有效。 - ingconti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接