我目前在appDelegate.m文件中使用以下代码:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnteredBackground:)
name: UIApplicationDidEnterBackgroundNotification
object: nil];
}
但是,我希望它在我的viewController.m文件中调用一个选择器。我怎么能这样做?
谢谢!
答案 0 :(得分:7)
通常,您首先在viewController.m init
方法(或其他适当的方法)中注册通知:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(someMethod:)
name: @"NotificationNameHere"
object: nil];
在您的App Delegate中,触发通知:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotification: @"NotificationNameHere"];
}
答案 1 :(得分:2)
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnteredBackground:)
name: UIApplicationDidEnterBackgroundNotification
object: nil];
}
答案 2 :(得分:1)
只需添加:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnteredBackground:)
name: UIApplicationDidEnterBackgroundNotification
object: nil];
答案 3 :(得分:1)
您不想注册您的应用代表以输入背景通知,您已经获得回调。在回调中为这些通知注册您的应用代理更不经意。您可以这样做,因为其他海报已经建议将您的viewController对象添加为init上的观察者(并且不要忘记在dealloc上删除自己,否则您将获得错误的访问)。
答案 4 :(得分:0)
如果问题是从viewController访问委托,你可以这样做:
MYAppDelegate *delegate = (MYAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate selectorName];
...否则澄清你的问题:P