Answers:
您可以像这样访问委托:
MainClass *appDelegate = (MainClass *)[[UIApplication sharedApplication] delegate];
用您的应用程序类的名称替换MainClass。
然后,如果您拥有另一个视图控制器的属性,则可以调用以下代码:
[appDelegate.viewController someMethod];
如果有人想知道如何执行以下操作swift
:
if let myDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
myDelegate.someMethod()
}
nil
什么?那不是一个应用程序总有一个AppDelegate吗?
sharedApplication()
应替换为shared
。即,删除“应用程序”和括号。因此,Swift 5.2的完整工作代码将是: if let myDelegate = UIApplication.shared.delegate as? AppDelegate { myDelegate.someMethod() }
听起来您只需要进行UINavigationController
设置?
您可以通过以下方式获取AppDelegate
程序中的任何位置
YourAppDelegateName* blah = (YourAppDelegateName*)[[UIApplication sharedApplication]delegate];
在应用程序委托中,您应该通过IB或代码来设置导航控制器。
在代码中,假设您已经创建了“房屋概览”视图控制器,则在您的AppDelegate
didFinishLaunchingWithOptions
...
self.m_window = [[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds] autorelease];
self.m_navigationController = [[[UINavigationController alloc]initWithRootViewController:homeViewController]autorelease];
[m_window addSubview:self.m_navigationController.view];
之后,您只需要每个“房间”一个viewcontroller并在拾取按钮单击事件时调用以下内容...
YourAppDelegateName* blah = (YourAppDelegateName*)[[UIApplication sharedApplication]delegate];
[blah.m_navigationController pushViewController:newRoomViewController animated:YES];
我尚未测试以上代码,因此可以原谅任何语法错误,但希望伪代码能有所帮助...
只需按照以下步骤
1.将您的应用程序委托导入您想要应用程序委托对象的类中。
#import "YourAppDelegate.h"
2.在您的类内部,创建您的应用程序委托对象的实例(基本上是单例)。
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并在其他地方重用它们,而不必担心类名等等。
请享用
Swift 3.0及更高版本的更新
//
// Step 1:- Create a method in AppDelegate.swift
//
func someMethodInAppDelegate() {
print("someMethodInAppDelegate called")
}
通过以下操作从控制器调用上述方法
//
// Step 2:- Getting a reference to the AppDelegate & calling the require method...
//
if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
appDelegate.someMethodInAppDelegate()
}
输出:
在2020年,iOS13,xCode 11.3。适用于Objective-C的是:
#import "AppDelegate.h"
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
它对我有用,我希望对您也一样!:D