在我的ViewController.m中,我的空白“保存数据”:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize myDatePicker, myTextField;
-(void)saveData
{
NSArray *value = [[NSArray alloc] initWithObjects:[myTextField text],[myDatePicker date], nil];
[value writeToFile:[self getFilePath] atomically:YES];
}
我想在我的AppDelegate.m中使用我的虚空“保存数据”:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self.ViewController saveData];
}
但Xcode无法识别“ViewController”也不识别“saveData”。
我不知道是否必须在我的AppDelegate中#import,请帮忙。
答案 0 :(得分:1)
如何从app delegate访问viewcontroller将取决于你拥有多少个viewcontrollers /它在当前导航层次结构中的位置等等。你可以为它添加一个属性,或者它可能是你的app delegate { {1}}。
但是,当应用程序进入后台时,您最好在viewcontroller中侦听通知。这意味着您需要的逻辑可以完全自包含在您的viewcontroller中,而您的app委托不需要了解它。
在viewcontroller的初始化方法中,您可以注册接收通知:
rootViewController
然后,实现方法:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
并确保您在viewcontroller的- (void)applicationDidEnterBackground:(NSNotification *)notification
{
[self saveData];
}
方法中以观察者身份移除自己:
dealloc
答案 1 :(得分:0)
在顶部的“appDelegate.m”实施文件中执行此导入 - >
#import "ViewController.h"
这将使自定义类ViewController对appDelegate可见。
为了能够从另一个类调用 - (void)saveData方法(在我们的例子中,另一个类是AppDelegate类),需要在公共接口中声明此方法。这意味着 - >
#import "ViewController.h"
@interface ViewController ()
-(void)saveData;
@end