2011-11-24 31 views
5

Khi tôi cài đặt ứng dụng của mình trong iphone và chạy lần đầu tiên thì nó yêu cầu sự cho phép của người dùng đối với dịch vụ vị trí chính. Đây là hình ảnh cho trình mô phỏng.iPhone: Vấn đề bật lên vị trí lõi

Trong ứng dụng của tôi, chế độ xem ứng dụng đầu tiên của tôi cần vị trí hiện tại và dựa trên vị trí nó liệt kê một số sự kiện. Nếu ứng dụng không thể nhận được vị trí, nó sẽ hiển thị danh sách các sự kiện mặc định.

Vì vậy, tôi muốn biết rằng Có thể giữ luồng ứng dụng cho đến khi người dùng nhấp vào nút "Don't allow" hoặc "ok" không?
Tôi biết nếu người dùng nhấp vào "Không cho phép" thì kCLErrorDenied lỗi sẽ bị kích hoạt.

Hiện tại điều gì xảy ra, nếu người dùng không nhấp vào bất kỳ nút nào, ứng dụng sẽ hiển thị trang danh sách với danh sách mặc định (không có vị trí). Và sau đó nếu người dùng nhấp vào nút "ok" thì không có gì xảy ra !!! Làm cách nào để làm mới trang khi nhấp vào nút "ok"?

Cảm ơn….

enter image description here

Trả lời

1

Vâng, chỉ cần không làm bất cứ điều gì cho đến khi những phương pháp đại biểu được triệu gọi. Khi họ nhấp vào 'OK', đó chỉ là tín hiệu cho Cocoa để đi và sau đó cố truy xuất vị trí của người dùng - bạn nên cấu trúc ứng dụng của mình để khi CLLocationManager có vị trí hoặc không thể nhận được vị trí, ứng dụng của bạn sẽ tiếp tục.

Bạn sẽ không muốn nói, tạm dừng ứng dụng của bạn cho đến khi vị trí trả về/không thành công; đó không phải là những gì phát triển hướng đối tượng là về.

0

Trong logic xem của bạn, hãy đợi cho đến khi các đại biểu CoreLocation của didUpdateToLocation hoặc didFailWithError được gọi. Có những phương thức này gọi/init danh sách của bạn và điền dữ liệu UI. Bộ điều khiển

mẫu:

Tiêu đề

@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 
Các vấn đề liên quan