我在Monotouch中使用StoryBoards并拥有一个已被指定为初始VC的ViewController。我有第二个VC,我想从第一个VC的ViewDidLoad方法以编程方式显示。 Objective-C步骤就像这样
Storyboard.InstantiateViewController("SecondVC")
ModalTransitionalStyle
secondVC.delegate = self;
this.PresentViewController(secondVC, true, nil)
如何在MonoTouch C#代码中实现这一目标?
我使用Storyboard.Ins..
方法实例化的VC没有要设置的委托或委托属性。虽然我的代码编译,但我没有看到第二个视图。我只看到第一个视图
任何帮助高度赞赏
感谢
答案 0 :(得分:10)
如果你延迟调用它,你应该可以这样做。我使用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);
}