iPhone: всплывающее окно с основным местоположением - PullRequest
2 голосов
/ 24 ноября 2011

Когда я устанавливаю свое приложение в iphone и запускаю первый раз, оно запрашивает у пользователя разрешение на базовую службу определения местоположения.Вот изображение для симулятора.

В моем приложении для первого просмотра приложения требуется текущее местоположение, и в зависимости от местоположения в нем перечислены некоторые события.Если приложение не может найти местоположение, оно показывает список событий по умолчанию.

Итак, я хотел бы знать, можно ли удерживать поток приложения до тех пор, пока пользователь не нажмет кнопку "Don't allow" или "ok"?
Я знаю, если пользователь нажимает "Не допускать "затем kCLErrorDenied ошибка будет запущена.

В настоящее время, что происходит, если пользователь не нажимает ни на одну из кнопок, приложение отображает страницу списка со списком по умолчанию (без расположения).И после этого, если пользователь нажимает кнопку «ok», то ничего не происходит !!!Как я могу обновить страницу после нажатия кнопки «ok»?

Спасибо….

enter image description here

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Да, просто ничего не делайте, пока не будут вызваны эти методы делегата. Когда они нажимают «ОК», это просто сигнал для «Какао» пойти и затем попытаться получить местоположение пользователя - вы должны структурировать свое приложение так, чтобы, когда у CLLocationManager было местоположение или его не было, ваше приложение затем продолжалось.

Вы не хотели бы говорить, приостановить ваше приложение, пока местоположение не вернется / не произойдет сбой; дело не в объектно-ориентированной разработке.

0 голосов
/ 25 ноября 2011

В вашей логике просмотра дождитесь вызова делегатов CoreLocation для didUpdateToLocation или didFailWithError.Попросите эти методы вызвать / инициализировать ваш список и заполнить данные интерфейса пользователя.

Пример контроллера:

Заголовок

@interface MyCLController : NSObject <CLLocationManagerDelegate> {
    CLLocationManager *locationManager;
}

@property (nonatomic, retain) CLLocationManager *locationManager;  

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation;

- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error;

@end

Код

#import "MyCLController.h"

@implementation MyCLController

@synthesize locationManager;

- (id) init {
    self = [super init];
    if (self != nil) {
        self.locationManager = [[[CLLocationManager alloc] init] autorelease];
        self.locationManager.delegate = self; // send loc updates to myself
    }
    return self;
}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"Location: %@", [newLocation description]);

    // FILL YOUR VIEW or broadcast a message to your view.

}

- (void)locationManager:(CLLocationManager *)manager
           didFailWithError:(NSError *)error
{
    NSLog(@"Error: %@", [error description]);

    // FILL YOUR VIEW or broadcast a message to your view.
}

- (void)dealloc {
    [self.locationManager release];
    [super dealloc];
}

@end
...