У меня есть код, который проверяет, имеет ли камера iphone флеш-память. А затем проверить, если мой переключатель включен, используя этот код:Objective-C: Почему мой оператор if не работает?
if(switch1.on){
}
свет включается нормально без этого кода, и я также попробовал этот код, а также:
if(!(switch1.on)){
}
и успешно превращает My вспышка камеры на, но и превращает его даже тогда, когда переключатель установлен в положение выключено
Вот мой полный код:
-(IBAction)torchon:(id)sender{
AVCaptureDevice *flashlight = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([flashlight isTorchAvailable] & [flashlight isTorchModeSupported:AVCaptureTorchModeOn]) {
BOOL success = [flashlight lockForConfiguration:Nil];
if(success){
if(switch1.on){ //// or (!(switch1.on))
on.hidden = YES;
[UIScreen mainScreen].brightness = 1.0;
[flashlight setTorchMode:AVCaptureTorchModeOn];
[flashlight unlockForConfiguration];
}
}
}
}
любая помощь будет оценена
**EDIT:**
Вот код, где я установить переключатель в положение не используя ibactions, когда значение переключателя изменилось. Этот код работает успешно:
-(IBAction)switch1{
if (switch1.on) {
switch1.on = YES;
switch2.on = NO;
} else{
switch2.on = YES;
switch1.on = NO;
}
}
-(IBAction)switch2{
if (switch2.on) {
switch2.on = YES;
switch1.on = NO;
} else{
switch1.on = YES;
switch2.on = NO;
}
}
Ответ
Сначала добавьте BOOL:
bool yes;
затем установить, что логическое значение в viewdidload
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
yes = YES;
}
После этого установите его YES, когда вызывается вызов и устанавливаете его к NO когда переключатель выключен:
-(IBAction)switch1{
if (swich1.on) {
swich1.on = YES;
swich2.on = NO;
yes = YES;
}
}
-(IBAction)switch2{
if (swich2.on) {
swich2.on = YES;
swich1.on = NO;
yes = NO;
}
}
, наконец, где он проверяет if(switch1.on){}
вам необходимо изменить его if(yes==YES){}
так вместе, что если заявление выглядит следующим образом:
-(IBAction)torchon:(id)sender{
AVCaptureDevice *flashlight = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([flashlight isTorchAvailable] & [flashlight isTorchModeSupported:AVCaptureTorchModeOn]) {
BOOL success = [flashlight lockForConfiguration:Nil];
if(success){
if(yes==YES){
on.hidden = YES;
[UIScreen mainScreen].brightness = 1.0;
[flashlight setTorchMode:AVCaptureTorchModeOn];
[flashlight unlockForConfiguration];
}
}
}
}
Не вопрос Xcode. Любые шансы 'switch1' -' nil'? –
Можем ли мы увидеть код, в котором вы устанавливаете 'on = NO'? –
@ Анооп Вайдия Обязательно проверьте мое редактирование! – user2534692