2014-09-11 4 views
0

작동하지 않습니다. 이제이 UIToolbarButton을 클릭하면 현재보기에서 다른보기를 열려고합니다.TapGestureRecognizer 내가 이미지를 보유하는있는 UIButton이있는 UIToolbarButton이

내 코드 :

- (IBAction)btnNowPlaying:(id)sender 
{ 
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(openPlaying:)]; 
    [self.view addGestureRecognizer:tap]; 
} 

- (void)openPlaying:(UIGestureRecognizer *)sender 
{ 
    NewMainViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"Center"]; 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController * npvc = [storyboard instantiateViewControllerWithIdentifier:@"NowPlayingVC"]; 
    [vc.containerView addSubview:npvc.view]; 
} 

이 작업, btnNowPlaying가있는 UIButton에 있습니다.

+0

바 버튼 안에 UIButton을 넣는 대신 UIBarButton 항목의 이미지 속성을 사용하는 이유는 무엇입니까? – trevorj

+0

이미지 속성을 사용하면 이미지가 표시되지 않습니다. –

+0

색조 색상 만 표시됩니다. –

답변

1

하나의보기 컨트롤러에서 다른보기 컨트롤러로 이동하기 만하면됩니다. 막대 버튼 항목에서 스토리 보드에서 탐색하려는보기 컨트롤러로 컨트롤 만 드래그하면됩니다. 그런 다음 두 개의 View Controller 사이의 Segue를 클릭하고 Attributes inspector에서 식별자를 설정하십시오.

// In a storyboard-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"THE_IDENTIFIER_YOU_ENTERED_IN_THE_ATTRIBUTES_INSPECTOR"]) { 
     if ([segue.destinationViewController isKindOfClass:[NEWViewController class]]) { 
      NEWViewController *vc = (NEWViewController *)segue.destinationViewController; 
      // Any preparation you need to do for next view controller 
      vc.someProperty = someValue; 
     } 
    } 
} 

그것은 현재 뷰 컨트롤러 내부에 새로운 뷰 컨트롤러를 엽니 다 조금 이상하다 : 그 후, 당신이 할 필요가 prepareForSegue:을 구현합니다. 왜 그걸 단념하지 않는거야?

또 다른 옵션은 ALLOC-init를 UIView의 대신 뷰 컨트롤러 단순히 addSubview:하는 것입니다.

0

먼저 UIButton 대신 스타일 및 설정 이미지 속성이있는 UIBarButton 항목을 사용할 수 있습니다.

당신은 추가 제스처 인식기를 만들 필요가 없습니다. Interface Builder에서 IBAction을 button으로 연결했다면, btnNowPlaying 메소드 안에 트랜지션 코드를 넣을 수 있습니다.

또 다른 방법은, 함께 IBOutlet을 만들고, 버튼으로 연결하고 - (void)viewDidLoad 방법에 UIGestureRecognizer을 만드는 것입니다.

+0

가 .... 시도 운 –

+0

- (공극)이있는 viewDidLoad하지 {[슈퍼의 viewDidLoad]; UIImage * i = [UIImage imageNamed : @ "1.png"]; CGSize destinationSize = CGSizeMake (25, 25); UIGraphicsBeginImageContext (destinationSize); [i drawInRect : CGRectMake (0, 0, destinationSize.width, destinationSize.height)]; UIImage * newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); btnNewImage.image = newImage; // btnNewImage.tintColor = [UIColor clearColor]; } –

+0

다른 방법으로이 문제를 해결할 수 있습니까? –