【发布时间】:2012-07-20 05:04:13
【问题描述】:
我处理这个问题已经有一段时间了,我需要一些帮助来设计我的逻辑。
我想按这个顺序做三件事 1)获取用户的位置 2) 使用该用户的位置调用 Web 服务 3) 用结果加载用户界面
我希望它的设计方式让我可以轻松地刷新结果,因此如果用户按下刷新按钮,我会再次执行步骤 1-3。
现在,我这样做如下。这是我在 ViewController 中的代码。
- (void) viewDidLoad {
//initialize CLLocationManager
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
[self.locationManager startUpdatingLocation];
- (void) locationManager: (CLLocationManager *)manager
didUpdateToLocation: (CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
if (oldLocation!= nil) { // make sure to wait until second latlong value
[self setLatitude:newLocation.coordinate.latitude];
[self setLongitude: newLocation.coordinate.longitude];
[self.locationManager stopUpdatingLocation];
self.locationManager.delegate = nil;
[self makeUseOfLocationWithLat:[self getLatitude] andLon:[self getLongitude]];
}
- (void) makeUseOfLocationWithLat: (double) lat andLon: (double) lon {
// call web service
[self loadUI];
}
- (void) loadUI {
// loads the user interface
}
如果我错了,请纠正我,但我的设计真的很糟糕。它根本不是模块化的,每种方法都是相互关联的。此外,我在 ViewController 中进行密集的 Web 服务调用,而不是在任何模型类中。您如何正确设置它? 我遇到的主要问题之一是......我不知道我的纬度和经度变量何时获得它们的值。如果我不从我的委托方法调用 makeUseOfLocation,那么我最终会使用 nil 纬度和经度值调用 makeUseOfLocation。
我已经为我的位置管理、NSKeyValueObserving 协议、dispatch_queues、NSOperations 研究了单例,但我是在 iOS 上开发的新手,无论我尝试什么,我都会卡在某个地方。请让我知道您对如何设置的想法。
感谢您的宝贵时间,我真的很感激。
【问题讨论】:
标签: ios xcode model-view-controller user-interface core-location