2012-07-30 2 views
0

내 오버레이에 스위치를 설정했습니다.이 스위치는 내 앱이 카메라를 실행할 때마다 나타납니다. 스위치가 나타나면 괜찮습니다. 하지만 스위치를 켜거나 끌 때 동작을 수행하도록 if 조건을 만드는 방법은 무엇입니까?오버레이에서 UISwitch를 설정하는 방법은 무엇입니까?

//This is the overlay. 
- (UIView*)CommomOverlay { 

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake (30,400,20,20)]; 
[mySwitch addTarget:self action:@selector(mySwitch) 
forControlEvents:UIControlEventAllTouchEvents]; 

[view addSubview:mySwitch]; 
return view; 
} 

스위치가 오버레이에 표시되지만 전화를 걸면 명령을 어떻게 내릴 수 있습니까?

나는 다음과 같은

-(void)mySwitch { 
    if ([mySwitch.on]){ 
    execute this.. 

    } 
} 

을 시도했다 그러나 위에서 작동하지 않습니다. "선언되지 않은 식별자, UISwitch를 의미 했습니까?"라는 오류 메시지가 나타납니다. 그러면 mySwitch.on을 UISwitch로 대체합니다. 그런 다음 "UISwitch 유형의 객체에서 찾을 수없는 속성"이라고 말합니다.

if else 메소드를 올바르게 실행하기 만하면됩니다. 나는 오버레이를 만들었고 스위치 코드를 만들었고 완벽하게 완벽하게 나타납니다. 하지만 이제는 if/else 조건으로 무언가를하고 싶습니다. 어떻게 수정합니까?

내가 뭘 잘못 했니?

답변

1

당신이 UISwitch에서 결정한 것을 기쁘게 생각합니다. 그 생각은 훨씬 더 솔직한 해결책입니다. 귀하의 문제는 스코프와 관련이 있습니다. 오버레이 초기화에서 UISwitch를 선언하면 함수가 끝나고 UISwitch에 액세스 할 수 없게됩니다.

당신이해야 할 일은 .h에있는 속성을 생성 한 다음 오버레이 초기화 내부의 속성과 동일하게 설정하는 것입니다. 그것은 당신의 문제를 해결해야합니다.

편집 : 당신이 주석에서 언급 한 문제를 겪고 :

1) 나는 당신의 declartion가되어야한다고 믿고, 그 후

@property (nonatomic, retain) UISwitch *mySwitch; 

, 당신의 @synthesize mySwitch;을해야 할 것이다 .m 파일

2) 그 이유는 mySwitch를 몇 군데에서 다시 선언하는 것처럼 보이기 때문에 동일한 이름을 가진 두 개의 변수가 있기 때문입니다.

mySwitch = //Stuff; 

이미 .H 파일에 선언 한 것을되는 이유, 당신은 단순히 필요에 : 그것은 단지처럼 보일 것입니다

UISwitch *mySwitch = //Stuff; 

: 내가 좋아하는 코드가 보이는이 장소를 추측하고있어 초기화하거나 조작하십시오. 다시 한 번 선언하면 함수를 종료 한 후에 다시 존재하지 않을 새 인스턴스로 덮어 씁니다.

3) 위의 코드를 참조하여 합성을 위해 mySwitch = mySwitch를 설정할 필요가 없습니다. 또한 함수 이름이 변수 이름과 같지 않은지 확인하십시오!

업데이트 및 기타 질문에 자유롭게 의견을 말하십시오. -Karoly

+0

내가 다른 답변자의 의견에 적어 놓은 수정 내용을 확인할 수 있습니까? –

+0

@AndrewLaeddis 편집을 보지 못했습니다. 질문을 수정하셨습니까? –

+0

나는 그것이 상영되고 있다고 생각한다. 어쨌든, 여기 문제가 있습니다. –

0

mySwitch 메서드에서 mySwitch에 액세스 할 수 없습니다. mySwitch에 대한 속성을 만들고 getter 및 setter를 만듭니다. 그런 다음 mySwitch 메소드에서 액세스 할 수 있습니다.

[..] 
@property UISwitch *mySwitch; 
[..] 
@synthesize mySwitch = mySwitch; 

-(void)mySwitch { 
    if ([self.mySwitch.on]){ 
    [..] 
    } 
} 
+0

수정 내용은 내가 말한 내용에 따라 경험 한 문제를 포함합니다. –

관련 문제