我正在创建一个确定用户位置的应用,并在[locationManager startUpdatingLocation]
功能中进行initWithNibName
调用,但initWithNibName
没有立即被调用,所以我添加了在AppDelegate.m
:
WhereamiViewController *wvc = [[WhereamiViewController alloc] initWithNibName:@"WhereamiViewController" bundle:nil];
这样可行,但是在initWithNibName
函数[locationManager startUpdatingLocation]
中调用此函数时出现问题。它实际上没有任何回报。但是,如果我将代码更改为在initWithNibName
行中调用viewDidLoad
,则可以正常运行。为什么是这样?我很困惑,一直在寻找答案,但我处于停滞状态。我知道需要调用initWithNibName,但是如果我从AppDelegate.m
调用它,我不明白为什么它不起作用。
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations`
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error
这是我的initWithNibName函数:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
// Set a movement threshold for new events.
locationManager.distanceFilter = 500; // meters
[locationManager startUpdatingLocation];
}
return self;
}
答案 0 :(得分:0)
你确实设置了Xib文件吗? 要尝试的事情: 如果你没有使用Nib,那么创建一个名为init的方法:
- (id) init {
self = [super init];
if(self) {
//call code here
}
return self;
}
然后在app delegate中调用nib方法而不是调用init
或第二个选项是在viewdidload中直接调用代码,而不是在上面执行