2012-02-22 4 views
0

다음 코드에서는 viewDidLoad의 일부 버튼을 숨기려고합니다. 여기 단추가 숨어 있습니다숨겨진 버튼을 표시하는 데 문제가 발생했습니다.

- (void)viewDidLoad 
{ 
for (int i = 100; i<117; i++) 
    { 
     UIButton *smileyButton = (UIButton *)[scroll viewWithTag:i]; 
     UITextField *smileyFields = (UITextField *)[scroll viewWithTag:i]; 
     UIImageView *smileyImage = (UIImageView *)[scroll viewWithTag:i]; 
     smileyFields.hidden = YES; 
     smileyButton.hidden = YES; 
    } 
} 

지금 다음 동작에서 단추를 볼 수 있습니다. 같은 태그 여러 의견이있는 경우 그러나 버튼을

-(IBAction)editButton:(id)sender 
{ 
for (int i = 100; i<117; i++) 
    { 
     UIButton *smileyButton = (UIButton *)[scroll viewWithTag:i]; 
     UITextField *smileyFields = (UITextField *)[scroll viewWithTag:i]; 
     UIImageView *smileyImage = (UIImageView *)[scroll viewWithTag:i]; 
     [smileyFields setHidden:NO]; //TextFields Not Visible 
     [smileyButton setHidden:NO]; //Buttons Not Visbile 
    } 

} 
+0

'editButton :'메서드가 호출 되었습니까? – Alexander

+0

태그 란 무엇입니까? 현재 코드는 100에서 116까지의 각 태그가 3 개의보기와 연결되어 있다고 가정합니다. – kevboh

+0

@Alexander : 네, 그 부르심. 메소드의 다른 모든 기능은 정상적으로 진행됩니다. – Shreedhar

답변

1

표시되지 않음, 기능 viewWithTag은 하나의 뷰를 반환합니다, 그래서 당신이 3 회를 호출하는 경우, 당신은 항상 같은보기를 얻을. 당신이 원하는 일을하려면

, 모든 서브 뷰를 반복하고 태그를 확인할 수 있습니다 :

for (UIView *aView in scrollView.subviews) { 
    if (aView.tag >= 100 && aView.tag < 117) { 
     aView.hidden = NO; 
    } 
} 
+0

이것이 사실 인 경우 왜 viewDidLoad에서 그 일이 발생하지 않습니까? – Shreedhar

+0

@Shreedhar : interestinh,하지만 Bartek은 같은 태그가있는 몇 가지보기에 옳습니다. IB를 사용하는 경우 다른 IBOutletCollection에 다른보기를 배치하는 것이 좋습니다. –

0

당신이 인터페이스 빌더에서 뷰 컨트롤러를 구축을? 그렇다면 숨길 각 태그를 다른 숫자로 설정하십시오. 1, 2, 3 등과 같이 간단한 것을 시도하십시오. 코드로 작성하는 경우 tag 속성을 대신 설정하십시오. 최대 태그 수를 기억하십시오 (4라고 가정합시다).

- (void)setTaggedViewsHidden:(BOOL)hidden; 

과 당신의하는 .m에 다음과 같은 : 당신의 viewDidLoad에서

- (void)setTaggedViewsHidden:(BOOL)hidden { 
    for (NSInteger tag = 1; tag <= 4; tag++) { 
    [scroll viewWithTag:tag].hidden = hidden; 
    } 
} 

지금처럼 전화 :

[self setTaggedViewsHidden:YES]; 

그런 다음 당신의 .H에 다음을 추가 editButton: 선택자에서 전화 번호는

입니다.
[self setTaggedViewsHidden:NO]; 

setTaggedViewsHidden의 코드를 사용중인 태그와 일치하도록 조정해야합니다. 이를 수행하는 가장 좋은 방법은 #define에 최소 및 최대 태그에 대한 상수를 사용하고 for 루프에있는 상수를 사용하는 것입니다.

+0

보너스 포인트에는보기에 '알파'속성을 애니메이션으로 적용하여 갑자기 표시하거나 숨기는 대신 표시하거나 숨 깁니다. – kevboh

관련 문제