我要做的是点击一个按钮(在代码中创建的),并让它调用一个不同的视图控制器,然后让它在新的视图控制器中运行一个函数。

我知道这在IB中相对容易完成,但这不是一个选择。

我想做的一个例子是,如果你有两个视图控制器一个带有房子的启动画面。另一个视图控制器有一个房子的遍历你可以按照设定的顺序遍历所有的房间。在启动画面中,每个房间都有按钮,玩家可以在游戏中跳跃到任意地点。


当前回答

遵循以下步骤

1.在你的类中导入你的app委托对象。

#import "YourAppDelegate.h"

2.在你的类中创建一个你的app委托对象的实例(它基本上是一个单例)。

YourAppDelegate *appDelegate=( YourAppDelegate* )[UIApplication sharedApplication].delegate;

3.现在使用选择器调用方法

if([appDelegate respondsToSelector:@selector(yourMethod)]){

        [appDelegate yourMethod];
    }

或直接通过

[appDelegate yourMethod];

为迅速

let appdel : AppDelegate = UIApplication.shared.delegate as! AppDelegate

我推荐第一个。跑和走。

其他回答

NSObject <UIApplicationDelegate> * universalAppDelegate = 
    ( NSObject <UIApplicationDelegate> * ) [ [ UIApplication sharedApplication ] delegate ];

它避免了在任何地方都包含你的appdelegate。h。 这是一个很简单的类型转换,允许开发独立的Controller并在其他地方重用它们,而不用担心类名等等……

享受

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

#进口“AppDelegate.h”

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

这对我很有效,我希望你也一样!: D

你可以在项目的前缀中添加#define uAppDelegate (AppDelegate *)[[UIApplication sharedApplication] delegate]。然后用下面的代码调用你的AppDelegate在任何UIViewController中的任何方法。

[uAppDelegate showLoginView];

我就是这么做的。

[[[UIApplication sharedApplication] delegate] performSelector:@selector(nameofMethod)];

不要忘记导入。

#import "AppDelegate.h"

遵循以下步骤

1.在你的类中导入你的app委托对象。

#import "YourAppDelegate.h"

2.在你的类中创建一个你的app委托对象的实例(它基本上是一个单例)。

YourAppDelegate *appDelegate=( YourAppDelegate* )[UIApplication sharedApplication].delegate;

3.现在使用选择器调用方法

if([appDelegate respondsToSelector:@selector(yourMethod)]){

        [appDelegate yourMethod];
    }

或直接通过

[appDelegate yourMethod];

为迅速

let appdel : AppDelegate = UIApplication.shared.delegate as! AppDelegate

我推荐第一个。跑和走。