0

NSNotification に不満を感じています。どういうわけか私のView Controllerは callback を受け取ることができません。私はインターネットを閲覧しましたが、その解決策は見つかりませんでした。これが私のコードです

SideBarViewController.h

- (void)postNotificationWithString:(NSString *)deviceLocation {

    NSString *notificationName = @"LocationDetectedNotification";

    NSDictionary *dict = [NSDictionary dictionaryWithObject:deviceLocation forKey:@"MyLocation"];

    [[NSNotificationCenter defaultCenter] postNotificationName:notificationName object:nil userInfo:dict];

}

- (void)locationManager:(CLLocationManager *)manager
 didUpdateLocations:(NSArray *)locations {

CLLocation *currentLocation = [locations lastObject];

if (currentLocation != nil) {
  lon = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
  lat = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
  [self postNotificationWithString:[NSString stringWithFormat:@"%@,%@", lat, lon]];

}
// Save battery consumption
[locationManager stopUpdatingLocation];
}

TestViewController.h

@implementation TestViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
    // Custom initialization


}
return self;
}

- (void)viewDidLoad {

     [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(useNotificationWithString:) name:@"LocationDetectedNotification" object:nil];

{
- (void)useNotificationWithString:(NSNotification*)notification {
    NSLog(@"Location Retrieved");
    NSDictionary *dict = [notification userInfo];
    self.location = [dict valueForKey:@"MyLocation"];

}

をクリックしてTestViewControllerも何も起こりません。storyboardビューコントローラーの作成に使用しました。前もって感謝します!

4

1 に答える 1

0

ここでの問題は、最初のView Controllerのメソッドで行い、次にメソッドで行う[locationManager startUpdatingLocation]ことだと思います。viewDidLoad[locationManager stopUpdatingLocation]- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

私の推測では、ロケーションを受け取り、インスタンス化する前にロケーション マネージャーを停止しますTestViewController。これは、オブザーバーがまだ登録されていないことを意味します。

于 2013-09-03T15:00:59.757 に答える