2012-10-30 3 views
0

나는 단추 동작 (findMe)이 viewDidAppear의 일부가되어야하며 showsUserLocation 오류가 있으므로 개별 IBAction으로 사용할 수 없다고 결정했습니다.내부에 IBAction (버튼)을 중첩 할 수 있습니까? (void) viewDidAppear : (BOOL) animated? 방법?

A : 심지어 가능합니까?

B : 그렇게하는 것이 합리적입니까?

C : 어떻게 생겼습니까? 내가 아는

내 현재 코드는 다음과 같이 잘못된 모습입니다 :

-(void)viewDidAppear:(BOOL)animated 
{ 
    if (findMe == YES) 
    { 
    self.mapView.showsUserLocation = YES; 
    [mapView setCenterCoordinate:mapView.userLocation.coordinate animated:YES]; 
    } 
} 

감사합니다!

답변

1

귀하의 질문은 매우 혼란스럽게 표현되고 불완전합니다 (오류 및 정확한 오류 메시지가 포함 된 코드를 포함 시키십시오). 그러나 제가 생각하는 세 가지 사항에 대해 답변 해 드리겠습니다.

두 코드에서 동일한 코드를 사용하려는 경우 두 메서드의 공통 부분을 세 번째 방법으로 추출하여 두 코드 모두 호출하도록합니다. 문제는 당신이 당신의 viewDidAppear 방법에 UI의 상태에 대해 뭔가를 알 필요가 있다는 것입니다 경우

- (IBAction) button { 
    stuff 
    [self commonPart]; 
} 

- (void) viewDidAppear { 
    stuff 
    [self commonPart]; 
} 

- (void) commonPart { 
    stuff they both do 
} 

, 당신은 문제의 컨트롤을 참조 할 함께 IBOutlet을 사용할 수 있습니다.

- (void) viewDidAppear { 
    if (self.findMeButton.someThingYouWantToCheck) { 
      self.mapView.showsUserLocation = YES; 
      [mapView setCenterCoordinate:mapView.userLocation.coordinate animated:YES]; 
    } 
} 

문제는 당신이 나중에에 따라 서로 다른 작업을 할 수 있도록 버튼을 누르면되었는지 여부를 저장하는 데 필요한 경우

, 당신의 객체에 BOOL 인스턴스 변수를 추가하고에 YES로 설정 버튼을 눌러 IBAction을 선택하십시오.

당신이하려는 일이 있었습니까?

+0

예, 대답의 후자는 내가하고 싶은 것입니다. 나는 초보자이다. 미안하다. 사용자가 버튼을 누를 때마다 button이 "showUserLocation"을 viewDidAppear 내부에서 실행하도록합니다. 그래서 저는 그것이 눌려 졌는지 여부를 저장하고 싶지 않습니다. 단지 언론에 즉시 반응하기를 원합니다. 내가 너를 혼란스럽게한다면 미안해! – Greg

+0

한 메서드의 일부를 다른 메서드의 일부로 실행할 수 없습니다. 첫 번째 예제와 같이 코드를 별도의 메서드로 이동하거나 복사하여 붙여 넣을 수 있습니다. –

+0

감사하고 싶습니다. 첫 번째 부분은 나를 위해 그것을 해결하고 내가 원하는 것을 성취했습니다. :) – Greg