内有RootElement的部分

时间:2014-05-02 20:53:44

标签: ios xcode xamarin monotouch.dialog

我是iOS应用开发,Xamarin / Xcode和Monotouch.dialog的新手。我试图在"更多关于章节和RootElements:RootElements" (http://docs.xamarin.com/guides/ios/user_interface/monotouch.dialog/)让我自己熟悉MonoTouch.Dialog的多屏应用程序。 MonoTouch.Dialog看起来很简单,但我遇到了一个无法解释的问题(q2)。

所以这里是我的问题/问题:

  1. 如何在使用非桌面屏幕的多屏幕应用程序中集成MonoTouch.Dialog创建的页面?我是否必须在主NavigationController中创建一个NavigationController [例如 - > (NavigationController) - 主页 - SomethingElse - (NavigationController) - (Monotouch.Dialog创建页面)],如何连接起始页面和MonoTouch.Dialog页面?

  2. 在Xamarin-iOS中工作,我完成了示例描述的所有内容,并观看了大量视频,并阅读了MonoTouch.dialog的几个Xamarin文档,但是当我单击创建的元素行(&#下的行)时34;晚餐"部分),他们不会转到行后面的新RootElement。我究竟做错了什么?我创建了一个新的DialogViewController项目,这就是我在AppDelegate.cs中的Xamarin代码中编辑的所有内容(Xcode storyboard只包含一个NavigationController)。

    UIWindow _window;
    UINavigationController _nav;
    DialogViewController _rootVC;
    RootElement _rootElement;
    
    
    public override UIWindow Window {
        get;
        set;
    }
    
    public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
    {
    
        _window = new UIWindow (UIScreen.MainScreen.Bounds);
    
    
        _rootElement = new RootElement ("Meals") {
            new Section ("Dinner") {
                (Element)new RootElement ("Dessert", new RadioGroup ("dessert", 2)) {
                        new Section () {
                            new RadioElement ("Ice Cream", "dessert"),
                            new RadioElement ("Milkshake", "dessert"),
                            new RadioElement ("Chocolate Cake", "dessert")
                        }
                },
                (Element)new RootElement ("Something"){
                    new Section () {
                        new EntryElement ("Name", "Click to edit", "")
                    }
                }
            }// end "Dinner"
        }; //end "Meals"
    
    
        _rootVC = new DialogViewController (_rootElement);
        _nav = new UINavigationController (_rootVC);
        _window.RootViewController = _nav;
        _window.MakeKeyAndVisible ();
    
        return true;
    } //end FinishedLaunching
    

1 个答案:

答案 0 :(得分:0)

您的代码适用于我。我不清楚你的故事板在哪里发挥作用 - 当代码中宣布你的所有UI时都没有必要。

在“堆叠”中只需要一个NavigationController。如果您的第一页只是UIViewController中包含一些按钮的NavigationController,您可以连接其中一个按钮的Touch事件,将MonoTouch.Dialog UI推送到堆栈

  protected void ButtonEvent(object sender, EventArgs e) {

    dvc = new DialogViewController(_root);

    // every view controller has a NavigationController property that will be non-null
    // if that VC is contained within a Nav Controller
    NavigationController.PushViewController(dvc,true);

  }

同样,在您的MonoTouch.Dialog用户界面中,您可以拥有StringElement,其Tapped事件会创建自定义视图控制器类的新实例,并将其推送到导航堆栈。