Jak włączyć / wyłączyć latarkę za pomocą jednego przycisku?

Mogę włączyć latarkę jednym przyciskiem i wyłączyć ją innym. Ale chcę to zrobić tylko jednym przyciskiem. Nie mam jednak struktury, która pozwala mi używać metody bool isSelected. Nie mam pojęcia, jak połączyć obie funkcje w jeden przycisk.

Oto kod, który działa:

-(void)onButtonPressed 
{

AVCaptureDevice *flashLight = [AVCaptureDevice 
defaultDeviceWithMediaType:AVMediaTypeVideo];
if([flashLight isTorchAvailable] && [flashLight
isTorchModeSupported:AVCaptureTorchModeOn])
{
    BOOL success = [flashLight lockForConfiguration:nil];
    if(success){
        [flashLight setTorchMode:AVCaptureTorchModeOn];
        [flashLight unlockForConfiguration];
    }
}

}

Używam tego, aby wyłączyć latarkę.

-(void)offButtonPressed {

AVCaptureDevice *flashLight = [AVCaptureDevice
defaultDeviceWithMediaType:AVMediaTypeVideo];
if([flashLight isTorchAvailable] && [flashLight
isTorchModeSupported:AVCaptureTorchModeOn])
{
    BOOL success = [flashLight lockForConfiguration:nil];
    if(success){
        [flashLight setTorchMode:AVCaptureTorchModeOff];
        [flashLight unlockForConfiguration];
    }
}


}

Nie mówię specjalnie o tym, jak to się robi. Dopóki latarka włącza się z pierwszym kranem i wyłącza się na sekundę, nie przejmowałem się tą metodą.

Używam jednak programów barbuttonitowych wykonywanych programowo, więc proszę nie podawaj mi metod IBAction. Byłbym również wdzięczny, gdyby sugerowana metoda była tak prosta, jak to możliwe, myślę, że sposób, w jaki używam latarki w tej chwili, jest zbyt skomplikowany.

questionAnswers(5)

yourAnswerToTheQuestion