在我的程序中,我需要将标签的值作为int。我该怎么办?
这是代码:
@implementation ViewController
@synthesize webview;
- (void)viewDidLoad
{
[super viewDidLoad];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"google.com"]]];
[super viewDidLoad];
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = 1;
if ([self.motionManager isAccelerometerAvailable]) {
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[self.motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
self.xAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.x];
self.yAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.y];
self.zAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.z];
});
}];
} else
NSLog(@"not active");
}
@end
如何将xAxis
的值设为int
。将其值作为int
后,我想在if语句中进行比较。
由于
答案 0 :(得分:0)
只需这样做,但我更喜欢NSInteger,这样在64位设备中,性能不会受到影响。 NSInteger根据设备使用的位处理器进行自适应。
[self.xAxis.text integerValue];
但如果你坚持使用ints
[self.xAxis.text intValue];
答案 1 :(得分:0)
在动画管理器更新处理程序中,CMMotionManager
将提供对CMAccelerometerData
对象的引用。 CMAccelerometerData
对象具有CMAcceleration
属性(acceleration
)。 CMAcceleration
是包含x
,y
和z
组件的结构,每个组件都定义为double
。看起来您已经在使用它来填充一些标签的文本值。在此处理程序块中,您已经有x值的数字表示。如果要执行检查(if语句),这是您应该使用的值。
- (void)viewDidLoad
{
[super viewDidLoad];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"google.com"]]];
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = 1;
if ([self.motionManager isAccelerometerAvailable]) {
[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
double x = accelerometerData.acceleration.x;
double y = accelerometerData.acceleration.y;
double z = accelerometerData.acceleration.z;
self.xAxis.text = [NSString stringWithFormat:@"%.2f", x];
self.yAxis.text = [NSString stringWithFormat:@"%.2f", y];
self.zAxis.text = [NSString stringWithFormat:@"%.2f", z];
if (x > 0.5) {
self.xAxis.textColor = [UIColor redColor];
} else {
self.xAxis.textColor = [UIColor blackColor];
}
}];
} else {
NSLog(@"Accelerometer is not available.");
}
}
每当x值超过0.5时,这将为xAxis
标签着色,并在小于0.5时将其返回黑色。
其他一些注意事项:
•您可以直接在主队列上获取加速度计更新,而不是调用dispatch_async(dispatch_get_main_queue(), …
。对于这里发生的事情,可以完全在主线程上执行。
•只拨打一次[super viewDidLoad]
电话。 UIViewController
或您正在进行子类化的任何UIViewController
子类可能不会期望多次调用viewDidLoad
,从而导致未定义的行为。