2014-03-01 2 views
0

내가 잘못하고있는 것을 알아낼 수 없습니다. 메서드가 호출 될 때 아무 일도 일어나지 않습니다. 다른 클래스에서 버튼 비활성화

ViewController* mainMenu; 

- (id)initWithSize:(CGSize)size { 

    if (self = [super initWithSize:size]) { 
     mainMenu = [[ViewController alloc] init]; 

     .... 
    } 
} 

- (void)pauseEnabled { 
    // mainMenu.pauseButton.hidden = NO; 
    // mainMenu.pauseButton.enabled = YES; 
    [mainMenu.pauseButton setHidden:NO]; 
    [mainMenu.pauseButton setEnabled:YES]; 
} 

- (void)pauseDisabled { 
    mainMenu.pauseButton.hidden = YES; 
    mainMenu.pauseButton.enabled = NO; 
} 

- (void)startGame { 
    [self pauseEnabled]; 
    ...... 
} 
+0

mainMenu보기 컨트롤러 클래스의 이름을 "ViewController'"로 지정하지 마십시오. 왜 ""MainMenuViewController' 또는 "'MainViewController'"와 같이 훨씬 더 직관적 인 것이 아닌가? –

+1

보기 컨트롤러가 자체보기를 제어해야하므로 ... 이름 ... – nhgrif

답변

0

pauseButton 스토리 보드/XIB 파일의 콘센트에 연결되어 있는지 확인 클래스의 인터페이스로 선언. 기본적으로 nil이 아닌지 확인하십시오. 또한보기 계층에 mainMenu의보기를 추가하는지 확인하십시오.

1

당신은 실행하면 :

mainMenu = [[ViewController alloc] init]; 

당신이보기로드되지 않고 화면에 표시되지 않습니다 새로운 뷰 컨트롤러를 만드는. 메시지를 보낼 수 있도록 화면에 실제로 표시되는 ViewController의 인스턴스를 가져와야합니다. 어떻게하는지는 앱의 구조와 무엇이 ViewController인지에 따라 크게 다릅니다.

initWithSize:의 사용은이 개체가 컨트롤러 자체가 아님을 나타냅니다. 이 경우에 당신이하고있는 일을 다시 생각하고,이 클래스가 뷰 컨트롤러에 대한 참조를 유지하는 대신 생성되었을 때 상호 작용해야하는 버튼에 대한 참조를 전달할 수 있습니다.