2014-04-16 2 views
0

나는 UIButton에서 세 번째 ViewController로 이동하려고하지만 호출 방법을 잘 모르겠습니다. 내가 어떻게 다시 전화하지 않고 특정 "IBThirdViewController"에 대한 ViewController 루트 알아요. 나는 같은 것을 할 당신은 당신이 블록 또는 대리자를 작성해야 팝업보기 버튼이있는 경우 이름특정 ViewController 버튼

- (IBAction)tourButton:(id)sender { 

     [self.navigationController pushViewController:IBTHirdViewController animated:YES]; 
    } 
+0

그 이유는 push segue를 사용하지 않는 이유는 무엇입니까?) 그러면 푸시 할 객체가 있어야합니다. 방금 이름이있는 물건이 없습니다. IBTHirdViewController를 만들고 밀어 넣고 작동하는지 확인하십시오. 새 질문을위한 시간이 아닌 경우 – Gruntcakes

+0

이 버튼은 자체 xib 파일로 팝업되므로 두 개의 스토리 보드에 있기 때문에 segue를 수행하는 방법을 잘 모름 – Packy

+0

Ok . 내가 말했던 것을 시도해보십시오. (PS는 오타가 아닌 경우 두 개의 다른 스토리 보드를 가져서는 안되며 여러 xib 또는 스토리 보드를 xib와 조합하여 사용할 수 있습니다.) 그러나 여러 스토리 보드는 상황에 따라 솔루션이 있지만 아마 그렇지 않을 수도 있습니다. 당신이 원하는) – Gruntcakes

답변

0

하여 호출 할 수 있는지 확실하지 않았다. controllerA가 controllerB로 팝업되었다고 가정 해 봅시다. 귀하의 컨트롤러 B가 팝업으로 이해되었으며 처리기 - tourButton이 포함 된 버튼이 있습니다.

이 경우 컨트롤러 B에 대리인을 추가해야합니다. 그래서 클래스와 구조 당신의 이름에 대한 잘 모르겠지만, (내 경우 controllerB에서) 컨트롤러를 당신의 팝업을 열고 @interface 전에 다음 줄을 추가 controllerB에서

@protocol PopUpControllerDelegate <NSObject> 

- (void)tourButtonTouched; 

@end 

:

@interface YOUR_POPUP_CONTROLLER_CLASSNAME_OR_CLASS_B : UIViewController 

@property (nonatomic, assign) id <PopUpControllerDelegate> delegate; 

그래서 controllerA에는 controllerB 인스턴스가 있어야합니다. 메모리에 할당 한 후이 인스턴스를 controllerA에 대리자를 Asign :

controllerB.delegate = self; 

은 또한 당신이 controllerA 클래스에 위임 콜백 구현이 필요합니다 직접 밀어하면 해당 I에 의해 (앱 적용 할 경우

- (void)tourButtonTouched 
{ 
// Here will be you code that push 3rd controller. Be sure that self (current) controller has navigation parent controller. Because in another push method will no work. 

[self.navigationController pushViewController:IBTHirdViewController animated:YES]; 

// Use present if there is no navigation controller: [self presentViewController:IBTHirdViewController animated:YES]; 
} 
관련 문제