2012-05-13 5 views
7

StotBoards를 Monotouch에서 사용하고 있고 초기 VC로 지정된 ViewController가 있습니다. 첫 번째 VC의 ViewDidLoad 메서드에서 프로그래밍 방식으로 표시 할 두 번째 VC가 있습니다. 목적-C 단계는 설정 Storyboard.InstantiateViewController("SecondVC") MonoTouch의 ViewController에서 다른 viewController를 프로그래밍 방식으로로드하는 방법

  • 를 통해 이렇게

    1. 인스턴스화 초 VC처럼 그 ModalTransitionalStyle
    2. this.PresentViewController(secondVC, true, nil)

    는 어떻게 달성 할 secondVC.delegate = self;

  • 사용과 같은 자아의 대리자를 설정 MonoTouch C# 코드에서?

    Storyboard.Ins.. 메서드를 사용하여 인스턴스화 한 VC에는 설정할 대리인 또는 대리인 속성이 없습니다. 그리고 비록 제 코드가 컴파일 되더라도 두 번째 뷰는 보이지 않습니다. 나는 첫 번째보기를 참조

    매우

    감사

  • +0

    질문을 이해하는 데 도움이되는 몇 가지 목표 코드를 게시 할 수 있습니까? – holmes

    +0

    MonoTouch를 사용하고 있습니다. 별로 Obj-C 코드. 질문에 설명 된 단계는 다른 ViewController에서 ViewController를 호출하는 방법에 대한 iOS 문서에서 가져온 것입니다. C#의 단계를 복제하려고합니다. – rams

    답변

    10

    당신은 지연에를 호출하는 경우이 작업을 수행 할 수 있어야합니다 감사 어떤 도움. 로드 후 PresentViewController를 호출하기 위해 Threading.Timer을 사용했습니다. 멀리 대표로서, UIViewController 해당 속성이 없습니다. 로드중인 컨트롤러에 적용 할 수있는 컨트롤러 유형으로 변환해야합니다. 그런 다음 위임을 설정할 수 있습니다. 이 (자기)를 사용하려면 위임 대신 WeakDelegate를 설정하는 것이 좋습니다.

    public override void ViewDidLoad() 
    { 
        base.ViewDidLoad(); 
    
        Timer tm = new Timer (new TimerCallback ((state)=> { 
         this.InvokeOnMainThread (new NSAction (()=> { 
          UIStoryboard board = UIStoryboard.FromName ("MainStoryboard", null); 
          UIViewController ctrl = (UIViewController)board.InstantiateViewController ("Number2VC"); 
          ctrl.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve; 
          this.PresentViewController (ctrl, true, null); 
         })); 
        }), null, 1000, Timeout.Infinite); 
    } 
    
    +0

    답변 주셔서 감사합니다. 여기서 지연이 필요한 이유를 설명해 주시겠습니까? – rams

    +0

    코드가 작동했습니다! 약간 지연이 있지만 예상대로 두 번째보기를 볼 수 있습니다. 하지만 왜 타이머가 필요한지 나는 이해하지 못합니다. – rams

    +0

    지연을 0 밀리 초로 줄일 수 있지만 여전히 작동합니다. 또한이 코드를 ViewDidAppear로 옮길 수도 있습니다. 나는 또 다른 관련 게시물 [여기.]을 발견했다. (0120-13992/unable-to-get-presentviewcontroller-to-work) – holmes

    관련 문제