Noob Xamarin / MonoTouch.Dialog问题:我已经在Xamarin Studio的故事板设计器中布置了我的iOS应用。我有一个UINavigationController,它的根视图包含带有静态单元格的UITableView,本质上是创建一个主菜单。单元格选择其各自的UIViewControllers。

我想使用MonoTouch.Dialog来布局“关于/设置”屏幕。但是,由于我在Xamarin / MonoTouch.Dialog中的新颖性,我遇到了将整个故事板方法与部分MonoTouch.Dialogue方法相结合的问题。

当我从初始的UITableView(AccountViewController)实例化到UIViewController上实例化一个新的DialogViewController时,实际上我将两个视图添加到导航堆栈中,第一个仅短暂出现,然后显示DialogViewController。我实例化DialogViewController的代码是这样的:

partial class AccountViewController : UIViewController
{
    public AccountViewController (IntPtr handle) : base (handle)
    {
    }

    public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        var root = new RootElement ("Settings") {
            new Section (){
                new BooleanElement ("Airplane Mode", false),
                new RootElement ("Notifications", 0, 0) {
                    new Section (null,
                        "Turn off Notifications to disable Sounds\n" +
                        "Alerts and Home Screen Badges for the\napplications below."){
                        new BooleanElement ("Notifications", false)
                    }
                }}
        };
        var dialog = new DialogViewController (root, true);
        this.NavigationController.PushViewController (dialog, true);
        //this.NavigationController.PresentViewController (dialog, true, null); tried this but then the UINavigationController shows no back buttons
        //View.AddSubview (dialog.View); tried this but then the UINavigationController shows no back buttons
    }
}


我可能将DialogViewController推到了堆栈的后期,创建了中间的空白屏幕,但是在我当前的体系结构下,我不知道将DialogViewController推入导航堆栈的正确位置。
网络中的大多数样本几乎都是100%MonoTouch.Dialog,没有情节提要...

谢谢!

最佳答案

您正在尝试将另一个ViewController(在本例中为DialogViewController)推入导航堆栈,而当前的ViewController仍在尝试加载。换句话说,在您的ViewDidLoad中这样做是不好的。您将必须等到当前的ViewController完成加载并获得焦点之后,才能将另一个View Controller推入堆栈。

使用情节提要的一部分涉及到内置的导航。我可以安全地假设您的“ AccountViewController”实际上什么也不做吗?在那种情况下,我不会坚持。而是在以前的视图控制器上,只需创建DialogViewController,然后将其手动推入堆栈即可。不看故事板和架构很难说。

关于c# - 将DialogViewController推送到ViewController到NavigationController堆栈上将得到2页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28707216/

10-08 22:46