我对这种提问方式感到有些困惑
我在这里提供支持图片的查询。关于这个问题,请你帮我解决一下
第1步:我的要求如下:通过使用CLLocationManger委托方法我获取速度值,如:
- (void)startLocationUpdates{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = YES;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
[locationManager requestWhenInUseAuthorization];
[locationManager startUpdatingLocation];
}
#pragma mark
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations{
float speed = locationManager.location.speed;
float speedInKmph = speed * 3.6; // to convert the speed into kmph.
NSString *speedValue =[NSString stringWithFormat:@"%.f Kmph ",speedInKmph];
self.currentSpeedLblRef.text = speedValue;
self.maxSpeedLblRef.text = speedValue;
}
第2步: currentSpeedLblRef,maxSpeedLblRef - >这些是我的UILabels
示例:现在我开车了 - >这是我第一次打开应用程序并且我获得了当前的汽车速度(例如: 120 Kmph )然后我需要在“maxSpeedLblRef”中显示相同的值( 120 Kmph )也
经过一段时间后我的当前车速如果 50 Kmph 。但我需要在“maxSpeedLblRef”中显示值是 - >最大值 - >意味着 120公里。因为我已经获得120公顷的价值了[/ p>]
之后如果我目前的车速是180公里 - >我需要显示“maxSpeedLblRef”值:180 Kmph。因为它是最新的比较120 Kmph
关闭应用程序然后
如果我重新打开应用程序,我想显示像“maxSpeedLblRef”这样的值 - > 180公里。因为此值是先前保存的值
这是我的源代码:Click here link
答案 0 :(得分:1)
你在这里缺少一些简单的东西!
您需要存储最大速度以进行比较 - 您在此处所做的只是每次都使用当前值更新标签。设置一个类级属性,初始值= 0,并在当前速度>时更新它。最高速度。
有几种方法可以存储最大值,以便在您下次打开应用时存在。可能最容易使用用户默认值。有许多教程可用 - 尝试这一个http://code.tutsplus.com/tutorials/ios-sdk-working-with-nsuserdefaults--mobile-6039
好的 - 使用你的项目代码,这就是你需要的。
将ViewController.h更新为此
// ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *currentSpeedLblRef;
@property (weak, nonatomic) IBOutlet UILabel *maxSpeedLblRef;
// you need to store the max speed
@property float speedMax;
-(void)loadDefaults;
-(void)storeDefaults;
@end
然后在VIewController.m中,用这个
替换viewDidLoad- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self loadDefaults];
[self startLocationUpdates];
}
将locationManager函数更新为此
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations{
float speed = locationManager.location.speed;
float speedInKmph = speed * 3.6; // to convert the speed into kmph.
NSString *speedValue =[NSString stringWithFormat:@"%.f Kmph ",speedInKmph];
self.currentSpeedLblRef.text = speedValue;
if (speedInKmph > self.speedMax)
{
self.speedMax = speedInKmph;
[self storeDefaults];
}
NSString *speedMaxValue =[NSString stringWithFormat:@"%.f Kmph ",self.speedMax];
self.maxSpeedLblRef.text = speedMaxValue;
}
,最后添加加载/存储函数
- (void)loadDefaults
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
self.speedMax = [defaults floatForKey:@"SpeedMax"];
}
- (void)storeDefaults
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setFloat:self.speedMax forKey:@"SpeedMax"];
[defaults synchronize];
}