2013-03-21 2 views
4

은 내가 XIB의 PortxibLandxib 모두 xibs에, 내가 버튼을 드래그 한이 전 각 방향에 다른 .xib을로드하고있는 간단한 응용 프로그램,클릭 이벤트가

을 만들어 할당 해고되지 않은

태그 값은 모두 xib 's에 입니다. 있는 UIButton의 클릭 이벤트가 해고되지

-(void)BtnClick:(id)sender 
    { 
     NSLog(@"BtnClick"); 
    } 

그리고 난 내 여기

UIButton *btn=(UIButton *)[self.view viewWithTag:1]; 
    [btn addTarget:self action:@selector(BtnClick:) forControlEvents:UIControlEventTouchUpInside]; 

viewDidLoad 인 선택 방법이 코드를 작성, ...

또는

동일한 방법으로 버튼을 호출 할 수있는 다른 방법이 있습니까? 오리엔테이션?

편집 : 헤더 파일에서

.h file

.m file

+0

willAnimateRotationToInterfaceOrientation의 코드를 추가하여 두 방향에서 모두 시도해 볼 수 있습니다. –

+0

내 대답을 시도하면 XIB에서 같은 방법으로 호출 할 수 있습니다. – Vedchi

+0

버튼 클릭 이벤트 하나의 방향으로 해고 ?? 풍경이나 초상화 중 하나 ?? –

답변

6

확인 ...당신이 또는 그것이 올바른보기에 배치되어 있는지 확인하고 당신은 태그 1 할당 viewWithTag

  • 와 그 뷰를 사용 self.view에서 그것을 찾는으로

    1. 버튼은 그래서 그냥 확인 xib 루트 뷰에 배치됩니다 동일한 태그 안에 다른 컨트롤이 없다는 것은 태그에 의해 인식되지 않는다는 것을 의미합니다. 이것이 당신의 경우라면 999 나 그 밖의 다른 것, 테스트와 같은 뷰에 대해 아주 특별한 숫자의 버튼 태그를 변경하십시오.

    편집

    당신이 설치 코드를이 곳 viewDidLoad에서 인정 받고되지 볼 것 같은 느낌입니다. 따라서 해당 코드를 viewDidLoad에 주석 처리하고 펜촉을로드 한 후 changeOrientation 메소드를 변경하십시오.

    -(void)changeOrientation 
    { 
        UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
    
    
        if(orientation==UIInterfaceOrientationPortrait || orientation==UIInterfaceOrientationPortraitUpsideDown) 
        { 
         [[NSBundle mainBundle] loadNibNamed:@"PortraitXib" owner:self options:nil]; 
        } 
        else 
        { 
         [[NSBundle mainBundle] loadNibNamed:@"LandscapeXib" owner:self options:nil]; 
        } 
    
        //Adding this code here makes sense that nib is loaded and after that we are recognizing button from loaded view of nib. 
        UIButton *btn = (UIButton*)[self.view viewWithTag:1]; 
        [btn addTarget:self action:@selector(BtnClick:) forControlEvents:UIControlEventTouchUpInside];  
    } 
    

    희망이 있습니다.

  • +0

    xib없이 수업을 만들고 세로와 다른 풍경에 대해 xib 두 태그 모두 같은 태그가있는 버튼이 있습니다.하지만 여전히 클릭 이벤트가 발생하지 않습니다. – Krunal

    +0

    xib에서 버튼 이외의 다른 컨트롤을 사용하지 않도록 요청하는 중입니다. –

    +0

    예 버튼에만 태그가 있습니다. – Krunal

    5

    IBOutlet UIButton *btn; 
    

    기준이 BTN를 추가하려면 xib 파일. 이 방법은

    -(IBAction)BtnClick:(id)sender 
    { 
        NSLog(@"BtnClick"); 
    } 
    

    을 발사되지 않도록 귀하의 경우 여기에

    사용중인 BTN은 IBAction를하고 펜촉 BTN에서이 참조로 기능은 XIB 파일에서 만든다 참조되지 않습니다. 이 경우 명시 적으로 대상을 추가 할 필요가 없습니다.

    그런 다음보기

    에 초기화하기 위해서 잊지 addsubview 그나마, 펜촉에있는 버튼을 추가하지 않는 경우, 당신은이 튜토리얼 http://www.idev101.com/learn/interface_builder_connections.html

    편집 인쇄 무엇 확인을 볼 수 있습니까?

     for (UIButton *but in [self.view subviews]) 
        { 
          NSLog("but.tag %d",but.tag); 
          if(but.tag==1)// compare for same row elements 
          { 
          NSLog("Button Added"); 
    
           [btn addTarget:self action:@selector(BtnClick:) forControlEvents:UIControlEventTouchUpInside]; 
          } 
         } 
    
    +0

    로그에 btn.tag가 '1'이고 버튼 추가됨이 표시되지만 여전히 클릭 이벤트가 발생하지 않습니다. : ( – Krunal

    0

    이렇게 버튼을 추가 할 수 있습니다. 이것을 추가하십시오로드 방법

    UIButton* aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
        [aButton setTag:1]; 
        [aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
        [aView addSubview:aButton]; 
    } 
    
    // then ... 
    
    - (void)buttonClicked:(UIButton*)button 
    { 
        NSLog(@"Button %d clicked.", [button tag]); 
    } 
    
    관련 문제