2011-11-12 2 views
2

다른보기 컨트롤러에서 단추를 숨기려면이 코드를 사용하고 있지만 다른보기 컨트롤러에서 단추를 숨기려면 단추를 누르면 단추가 숨겨지지 않습니다.다른보기 컨트롤러에서 단추를 숨기려면 어떻게해야합니까?

이것은 내가 다른 뷰 컨트롤러의 버튼을 숨기기 위해 사용하고있는 코드 :

[self dismissModalViewControllerAnimated:YES]; 

    NSLog(@"Exited"); 

    ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

    [vc.mainbutton1 setHidden:YES]; 

왜이 작동하지 않는?

감사합니다.

+0

시나리오에 대한 설명이 명확하지 않습니다. 하지만 당신을 올바르게 이해한다면 대의원을 세워야합니다. ViewController 인스턴스 인 vc를 인스턴스화하고 [vc.mainbutton1 setHidden : YES]를 시도해 보았던 것은 작동하지 않습니다. 이 새로 생성 된 vc는 mainbutton1을 숨기고 싶은 동일한 ViewController 인스턴스가 아니기 때문입니다. – user523234

답변

4

은 ViewController 컨트롤러에서 BOOL 변수를 가져 와서 속성을 만들고 합성합니다. 그리고 이렇게하십시오. 의

뷰 컨트롤러의 viewDidLoad에서
ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
vc.check = YES; 

에게 쓰기이

if(self.check) 
    [mainbutton1 set hidden:YES]; 
+1

내 대답을 원한다면 정답으로 작성하십시오. – Tendulkar

+0

앱이 시작될 때 어쨌든로드 될 때 버튼을 숨기지 않을까요? 내가 다른보기 컨트롤러에서 버튼을 누르면 버튼을 숨길 필요가있다 ... – pixelbitlabs

+0

자세히 이해할 수 없다. – Tendulkar

0
비록 당신이 alloc'd 제대로의 ViewController를 init'd 때문에이 작동하지 않는 이유는

, 실제 요소 그 vc ViewController (mainbutton1 포함)가 아직로드되지 않았습니다.

청부업 인은 올바른 생각을 가지고 있습니다 (그리고 나는 그의 생각을 표명했습니다).

어느 뷰가 나타나거나 명시 적으로 (애니메이션이나 추가 파단 또는 무엇이든을 통해)보기를 표시하여 [mainButton1 setHidden: YES] 바로 후 호출 할 때 숨겨진에 mainButton1을 설정하는 BOOL 속성에 넣어. 귀하의 질문에서

0

당신이 당신의 코드에서 당신은 당신이 관찰 새

ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 
[vc.mainbutton1 setHidden:YES]; 

뷰 컨트롤러 중 하나를 만드는 반면, 기존의 뷰 컨트롤러의 버튼을 숨길처럼 소리 하나가 아닙니다 mainbutton1 콘센트가 제대로 연결되어 있지 않거나 예상대로 작동하지 않습니다. 메모리 주소를 기록하여 메모리 컨트롤러가 예상 한 컨트롤러인지 확인할 수 있습니다.

NSLog(@"Hid button for view controller %p", vc); 

그리고

NSLog(@"In viewDidAppear for view controller %p", self); 
1

다른 답변을하지 않는 일을해야의 ViewController의 viewDidAppear 콜백에서 같은 일을 ...

난 당신이하려고하는 추측 갈거야 당신의 코드에 의해 판단 모달보기를 제공 한 viewController의 버튼을 숨기려면?

이것이 올바른 경우 사용하려는 기존의 viewController가 아닌 ViewController의 새 인스턴스를 만들 때 수행중인 작업이 작동하지 않습니다.

제공된 모달보기에서 [self dismissModalViewControllerAnimated:YES]; (으)로 전화를 걸면 괜찮습니다.하지만 Apple의 utitliy 앱 템플리트에서와 같이 해지를 처리하도록 대리인을 설정하는 경향이 있습니다.

0

다른 곳에서 어떤 일이 발생하면 특정 버튼을 숨기고 싶습니다.

당신은 해킹 (다소 신경 쓰지는 않지만)을 AppDelegate의 변수로 제어 할 수 있습니다.

은 "뭔가" "다른 곳"무슨 일이 일어나고,이 작업을 수행 :

MyAppDelegate *appDelegate = [[(MyAppDelegate *)UIApplication sharedApplication] delegate]; 
appDelegate.shouldHideThatOtherButtonLater = YES; 

을 그런 다음 결정하기 위해이 값을 사용할 수 있습니다에 나중에 새의 ViewController를 만들 때 버튼을 표시하거나하는 경우는 이 마음에 들지 :

당신이 경우에 생성하고 그 shouldHideThatOtherButtonLater-속성을 합성하여이 대한 AppDelegate에 준비를해야합니다
ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 

MyAppDelegate *appDelegate = [[(MyAppDelegate *)UIApplication sharedApplication] delegate]; 
[vc.mainbutton1 setHidden: appDelegate.shouldHideThatOtherButtonLater ]; 

.

관련 문제