0
내 프로젝트에는 장치 (iPad)와 2 개의 물리적 비콘이 관련됩니다. 그것은 내 장치가 각 비콘의 즉각적인 범위 (다른 작은 값으로)를 입력 할 때 작동하며, 특정 비컨마다 버튼이 나타납니다. 그러나 여기서 문제는 일단 beacon.proximity 조건에 if 문을 나열하면 버튼이 나타나지 않는 것입니다. 모든 도움을 주시면 감사하겠습니다!CL 근접 범위를 설정하면 왜 내 단추가 나타나지 않습니까?
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
CLBeacon *beacon = [[CLBeacon alloc] init];
beacon = [beacons lastObject];
self.majorLbl.text = [NSString stringWithFormat:@"%@", beacon.major];
self.minorLbl.text = [NSString stringWithFormat:@"%@", beacon.minor];
if ([self.majorLbl.text isEqual: @"1"])
{
if ([self.minorLbl.text isEqual:@"10"])
{
if (beacon.proximity == CLProximityImmediate)
{
_movieBtn1.hidden = NO;
}
else if ([self.minorLbl.text isEqual:@"3"])
{
if (beacon.proximity == CLProximityImmediate)
{
_movieBtn2.hidden = NO;
}
}
}
}
}
데이빗의 충고는 언제나 그렇듯이 좋지만, 비콘의 주 값과 부 값을 문자열로 변환하고, 문자열을 레이블에 저장 한 다음 레이블의 텍스트 내용을 조사하는 것은 권장합니다. 레이블은 뷰 객체이므로 상태 데이터를 저장하는 데 사용하면 안됩니다. 또한 문자열로 변환 한 다음 문자열을 비교하는 것은 오류가 발생하기 쉽습니다. 대신에 beacon.major 및 beacon.minor 등록 정보에서 integerValue 메소드를 사용하고 숫자 비교를 수행하십시오. –