如何以编程方式从MonoTouch中的ViewController加载另一个viewController

ram*_*ams 7 xamarin.ios

我在Monotouch中使用StoryBoards并且有一个ViewController,它被指定为初始VC.我有第二个VC,我想从第一个VC的ViewDidLoad方法以编程方式显示.Objective-C步骤就是这样

  1. 通过实例化第二个VC Storyboard.InstantiateViewController("SecondVC")
  2. 设置它 ModalTransitionalStyle
  3. 将其委托设置为自我 secondVC.delegate = self;
  4. 使用 this.PresentViewController(secondVC, true, nil)

如何在MonoTouch C#代码中实现这一目标?

我使用Storyboard.Ins..方法实例化的VC 没有要设置的委托或Delegate属性.虽然我的代码编译,但我没有看到第二个视图.我只看到第一个视图

任何帮助高度赞赏

谢谢

hol*_*mes 10

如果你延迟调用它,你应该可以这样做.我使用a Threading.Timer在加载后第二次调用PresentViewController.对于委托,UIViewController没有该属性.您必须转换为适用于您正在加载的控制器的控制器类型.然后你可以设置委托.如果要使用此(self),您可能希望设置WeakDelegate而不是Delegate.

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);
}
Run Code Online (Sandbox Code Playgroud)