2014-01-20 3 views
0

나는이 머리카락을 찢어 내고 있습니다. 2 개의 버튼이있는 메뉴보기가 있습니다. 각 버튼은 별도의 Segue 식별자를 통해 다른 View Controller로 라우팅되었습니다. 즉, 둘 다 동일한보기 컨트롤러를 가리키고 있지만 서로 다른 부분을 가리 킵니다.내 UIViewController로 캐스팅하는 방법

필자의 연구는 모두 내 대상보기 컨트롤러에 '캐스트'해야한다는 것을 나타내며, 필자의 삶에서 작동하는 코드를 찾을 수 없으며, 더 복잡한 코드로 코드를 저장하지도 못한다.

내 DESTINATION의 속성/TankCalculatorViewController 뷰 컨트롤러 헤더 파일은 다음과 같습니다

// Properties for segue identifiers 
@property(nonatomic, readonly) NSString *tankCalcOne; 
@property(nonatomic, readonly) NSString *tankCalcTwo; 

이 코드는 내 MENU 구현 파일에 있습니다

// This allows the view for tankCalcOne or Two depending on which button is clicked in the menu 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    //cast??? 

    if ([segue.identifier isEqualToString:@"tankCalcOne"]) 
    { 
     [[segue destinationViewController] TankCalculatorViewController:self]; 
    } 
    else ([segue.identifier isEqualToString:@"tankCalcTwo"]); 
    { 
    [[segue destinationViewController] TankCalculatorViewController:self]; 
    } 
} 

내가 본 여기에 답변 말하는 것을 수십 "사용자 정의 클래스로 캐스팅해야합니다."와 같은 코드 예제는 내가 지금하고있는 것에 정확히 적용된 코드 예제가 아니며 여기서 코드를 어디에 둘 것인지 잘 모릅니다. 그것은 대상보기 컨트롤러에 대한 헤더에 갈 것이라고 짐작하고, 다음 TankCalculatorViewController.h 내 메뉴 구현에 가져올 것이라고하지만 어둠 속에서 정말 쐈어. 저는이 세상에서 충돌 과정을 겪어 왔으며,이 언어로 작업 한 지 몇 달이 지난 후에도 몇 가지 개념과 확실하게 명명법이 계속 침체되고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다. 도움이된다면

, 난에 다음과 같은 오류가 점점 오전 내 다음/IF :

사전에

감사합니다 '선택 TankCalculatorViewController에 대한 알려진 인스턴스 인스턴스 메소드'.

+0

** [((MyViewController *) destinationViewController] SEGUE) TankCalculatorViewController : 자기] ** 그것을 던지기 위하여 이것을 시도하십시오 – CoolMonster

답변

1

그것은 내가 좋아하고있다

[(MyControllerClassName *)[segue destinationViewController]TankCalculatorViewController:self]]; 
+0

응답을위한 감사합니다. 위의 질문과 마찬가지로이 코드를 어디에 넣을 까? 대상 헤더에서? 코드의 어딘가에 이미 메뉴 구현을 넣었습니까? –

+0

당신은 prepareForSegue 메소드 – codercat

+0

을 사용했습니다. 실제로했습니다. 그럼이 코드는 그 메소드 안에 들어 있나요? 귀하의 코드에서 'MyControllerClass'를 'TankCalculatorViewController'로 대체합니까? –

0

같은 C 개념으로 간단한 할 일이

if ([[segue identifier] isEqualToString:@"InvoiceDetail"]) 
{ 
    IVInvoiceDetailViewController *detailViewController = [segue destinationViewController]; 
    detailViewController.yourString = self.yourStringObject; 
} 
+0

응답 해 주셔서 감사합니다. 나는 이것이 내가하는 일에 어떻게 적용되는지를 보지 못하고있다. 내 대상보기는 기본적으로 계산기이지만 동시에 2 개가 독립적으로 실행되어야합니다. 나는 테이블 뷰를 사용하지 않는다. –

+0

여기에 문자열을 사용할 수 있습니다. 코드를 업데이트 해 주시면 현재 컨트롤러 데이터를 다른 컨트롤러로 전달하고 관리 할 수 ​​있습니다. – Retro

+0

컨트롤러간에 데이터를 전달하지 않으려 고합니다. 위의 방법은 내가 필요로하는 것보다 더 많은 변수를 가져오고있다. yourString, yourStringObject가 어디에서 발견 될지 확실하지 않습니다. 난 그냥 내 계산기보기의 별도 버전을 열 수 있어야합니다. 그들은 어떤 데이터도 공유 할 필요가 없습니다. –

관련 문제