0

好的,所以我以为我解决了这个问题,但遇到了另一个问题......

我获取用户的位置,然后使用他们的坐标来查找他们当前所在的邮政编码,但是当我在块内运行它时,它只注销到控制台一次。当我尝试以另一种方法运行该块时,它会吐出很多次,所有这些都使用相同的邮政编码。

我的问题是,我将如何制作它以便块打印一个邮政编码,并且每次打开视图控制器时都会这样做..?

//user's location
    locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [locationManager startUpdatingLocation];



        CLGeocoder *fgeo = [[CLGeocoder alloc] init];
        [fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
            if (!error) {
                CLPlacemark *placemark = [placemarks objectAtIndex:0];
                zip = placemark.postalCode;

                NSLog(@"%@", zip);
                //[self jsonRequest];
4

2 回答 2

1

When I try to run the block in another method it spits out tons of times all with the same zip code.

Once it enters the If(!error) put in a return statement, and that should solve problem.

于 2013-09-15T14:01:06.850 回答
0

覆盖viewDidAppear并将您的代码放在那里。每次视图控制器出现时都会调用它。如果您希望在创建视图控制器并即将出现时只调用一次,请覆盖viewDidLoad.

如果您希望它只被调用一次,但特别是在视图出现在屏幕上之后,您必须检查其中是否viewDidAppear有指示它是否第一次出现的内容。您可能必须在viewDidLoador中设置一个标志,然后在第一次调用时init取消设置它。viewDidAppear

于 2013-09-15T14:07:28.693 回答