ios7 initWithNibName

时间:2013-11-03 02:11:26

标签: ios objective-c ios7

我正在创建一个确定用户位置的应用,并在[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;
}

1 个答案:

答案 0 :(得分:0)

你确实设置了Xib文件吗? 要尝试的事情: 如果你没有使用Nib,那么创建一个名为init的方法:

- (id) init {
self = [super init];
if(self) {
    //call code here
}
return self;
}

然后在app delegate中调用nib方法而不是调用init

或第二个选项是在viewdidload中直接调用代码,而不是在上面执行