6

我很难解决这个问题。我的MainWindow.xib,有一个NavigationController,它的视图是从另一个继承的xib

现在,我DialogViewController从主视图中按下 a,但在第二个视图的导航栏上看不到后退按钮。

DialogViewController它从UIViewController.

感谢和问候阿布舍克

4

4 回答 4

15

DialogViewController 的构造函数有一个名为 push 的参数,您应该将其设置为 true:

new DialogViewController(rootElement, true); // true will show the back button
于 2012-04-21T23:16:39.357 回答
2

如果没有看到您的代码,我不确定这里到底出了什么问题。但是,据我所知UINavigationController,视图控制器堆栈开始为空。当您按下第一个视图控制器时,它会为导航控制器提供一个要显示的视图,但它没有任何东西可以“返回”,因此它不显示后退按钮。如果您按下第二个视图,您可能会得到一个后退按钮。

Title此外,如果您希望后退按钮反映您将返回的视图,请确保在您的子视图控制器上设置了该属性。

于 2011-12-20T04:00:44.277 回答
0

我有一个标签栏控制器,然后将其交给导航控制器(在带有 flyoutnavcontollers 的情节提要中)。此处的视图控制器之一启动到用于 MT.D 内容的对话框视图控制器。

我想要一个可爱的尖头/锥形后退按钮,从单点触控对话框回到导航控制器中的呼叫点。

但是,即使我出于某种原因使用当前导航控制器(即按钮未显示且无法返回),启动 MT.D 也会丢失导航。随后的 mt.d 屏幕给出了一个后退按钮。

显然,您应该将真正的布尔值传递给调用以启用后退按钮,同时推入现有堆栈,但这对我不起作用:

this.NavigationController.PushViewController (dv, true);

丹的上述解决方案对我不起作用。但是在根 MT.D 屏幕上弹出当前的 dialogviewcontroller 有助于回到我在故事板(或 flyoutnav 控制器)的原始导航控制器中的先前位置。

不确定这个黑客是否是正确的方法,但它有效。

dv.NavigationItem.RightBarButtonItem = new UIBarButtonItem("Back",UIBarButtonItemStyle.Bordered,delegate(object sender,EventArgs e) 
            {   

                NavigationController.PopViewControllerAnimated(true);
            });

*更新

我设法通过将 dialogviewcontroller 添加到当前 viewcontrollers 子视图来获得后退按钮:

 dvc = new MyDvcController(this.NavigationController);
 this.View.AddSubview(dvc.TableView);

对应的 MyDvcController 主要是这样的:

public partial class MyDvcController : DialogViewController
{
    public MyDvcController (UINavigationController nav): base (UITableViewStyle.Grouped, null)
    {

        navigation = nav;
        Root = new RootElement ("Demos"){
            new Section ("Element API"){
                new StringElement ("iPhone Settings Sample", DemoElementApi),

            }
        };
    }  
}

这允许 monotouch.dialog 成为当前导航控制器堆栈的一部分,并实现具有锥形外观的自动后退按钮 ..yay

于 2013-04-16T03:12:07.240 回答
-1

也可以自己实现

dialogViewController.NavigationItem.RightBarButtonItem = new UIBarButtonItem("Back",UIBarButtonItemStyle.Bordered,delegate(object sender,EventArgs e) 
            {   

              NavigationController.DismissModalViewControllerAnimated(true);
            });
于 2012-02-13T18:33:15.117 回答