2014-09-17 2 views
0

iPhone 응용 프로그램을 만들고 있습니다. 현재 나는 의 UIBarButtonItem을 """second" 클래스의 대상으로 표시하므로 두 번째 클래스에 UIBarButtonItem 액션 메서드를 제공하고 있습니다. 그리고 잘 작동합니다. 이제iOS에서 UIBarButtonItem 액션이 실행되면 다른 메소드를 호출하는 방법은 무엇입니까?

- (void)rightRevealToggle:(id)sender 
{  
    [self rightRevealToggleAnimated:YES]; 
} 

: 여기

UIBarButtonItem *rightRevealButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"MENU" 
style:UIBarButtonItemStyleBordered target:revealController action:@selector(rightRevealToggle:)]; 

는 2 등석의 내 UIBarButtonItem 방법입니다 : 여기

두 번째 클래스의 대상, 즉 "revealController"내 첫 번째 클래스 내 코드입니다 , 내 문제는 내 첫 번째 클래스에서 슬라이드 쇼 이미지를 표시하는, 그래서 사용자가 "rightRevealToggle"UIBarButtonItem 작업 메서드 즉, 탭할 때 슬라이드 쇼를 중지해야합니다. 대상이 동일하면 UIBarButtonItem 액션 메소드와 함께 슬라이드 쇼 중지 액션을 설정하는 것이 쉽습니다. 하지만 제 경우에는 퍼스트 클래스에서 슬라이드 쇼를 사용하고 있으며 두 번째 클래스에 선언되지 않았습니다.

여기에 내가 나에게 난 내 출력을 달성 할 수있는 몇 가지 방법을 제안 해주십시오 사용자가 UIBarButtonItem 액션 메소드

[slideshow stop]; 

에 탭 때 호출 할 필요가 있음을 내 슬라이드 쇼 정지 방법이다. 미리 감사드립니다! barbuttonitem 초기화와 함께

답변

0

revealController의 속성 할당 (예 FirstController 명명한다.)

RevealController.h

@property (nonatomic, strong) FirstController *firstController; 

을 FirstController.m를

- (void) viewDidLoad() { 

.... 

[revealController setFirstController: self]; 
.... 
UIBarButtonItem *rightRevealButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"MENU" 
style:UIBarButtonItemStyleBordered target:revealController action:@selector(rightRevealToggle:)]; 

.... 
} 

RevealController .m

- (void)rightRevealToggle:(id)sender 
{  
    [self rightRevealToggleAnimated:YES]; 

    // call instance method of FirstController 

    [firstController stopSlideShow]; // this will navigate your pointer to FirstController class where you can access slide show method and properties 
} 

희망하시는 것입니다.

+0

고맙습니다 .. 저에게 도움이되었습니다 .. – user2786

+0

Welcome! 너 ans을 upvote 수 있습니다. :) – Mrunal

+0

나는 이미 답변을 투표 ... 감사합니다! – user2786

0

즉, 먼저 인스턴스를 가져와야합니다. 메소드 내에서 클래스를 오른쪽으로 누르기 만하면 [instanceOfFirstClass stop];

예를 들어 FirstClass의 인스턴스 (예 : : insFirstClass)가 슬라이드 쇼를 재생하는 메모리에로드되었다고합니다.

그래서 rightRevealToggle이 호출 될 때 SecondClass에서 FirstClass 인스턴스 인 insFirstClass가 여전히 메모리에 있고 슬라이드 쇼 메서드를 실행 중이라고 가정합니다.

이제는 이미 메모리에 슬라이드 쇼를 실행중인 FirstClass의 insFirstClass 인스턴스에 액세스해야합니다 (예 : navigationController에서이 인스턴스를 푸시 했음).insFirstClass 후

메소드 내에서 SecondClass에서 보류에

-(void)rightRevealToggle:(id)sender 
{ 
//your extra logic 
//... 
//... 
    FirstClass *insFirstClassInSecondClass = [from navigationcontroller.viewcontrollers or any other blah blah stuff]; 
    [insFirstClassInSecondClass stop]; 

//your extra logic 
//... 
//... 
} 

주 : 나는 당신이 아이디어를 얻고 내 대답을 이해를 바랍니다. 그렇지 않다면 저에게 알려서 답변을 편집하여 이해할 수 있도록하십시오.

0

당신이 당신이 슬라이더를 시작할 때 관찰자를 추가하고 추가 선택 stopSlider

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopSlider) name:@"stopSliderNotification" object:nil]; 

을하고 추가 할 수 있습니다 viewController1 (내가 가정 위치를 시작 슬라이더)에서

NSNotificationCenter을 사용하여 달성 할 수 원하는 선택기라는 이름의 stopSlider

-(void)stopSlider{ 
    // Code For Stopping Slider here 
} 

이제 다른 ViewController에서 st 영업 이익 슬라이더 당신은 stopSliderNotification을 게시 할 수 있으며이이 시나리오를 위해 잘 작동합니다

[[NSNotificationCenter defaultCenter] postNotificationName:@"stopSliderNotification" object:nil]; 

다음 코드를 사용하여 viewController1stopSlider 선택기를 호출합니다,이 도움이되기를 바랍니다.

+0

답장을 보내 주셔서 감사합니다 @ Bhumit ..! – user2786

관련 문제