我很难解决这个问题。我的MainWindow.xib
,有一个NavigationController
,它的视图是从另一个继承的xib
。
现在,我DialogViewController
从主视图中按下 a,但在第二个视图的导航栏上看不到后退按钮。
当DialogViewController
它从UIViewController
.
感谢和问候阿布舍克
我很难解决这个问题。我的MainWindow.xib
,有一个NavigationController
,它的视图是从另一个继承的xib
。
现在,我DialogViewController
从主视图中按下 a,但在第二个视图的导航栏上看不到后退按钮。
当DialogViewController
它从UIViewController
.
感谢和问候阿布舍克
DialogViewController 的构造函数有一个名为 push 的参数,您应该将其设置为 true:
new DialogViewController(rootElement, true); // true will show the back button
如果没有看到您的代码,我不确定这里到底出了什么问题。但是,据我所知UINavigationController
,视图控制器堆栈开始为空。当您按下第一个视图控制器时,它会为导航控制器提供一个要显示的视图,但它没有任何东西可以“返回”,因此它不显示后退按钮。如果您按下第二个视图,您可能会得到一个后退按钮。
Title
此外,如果您希望后退按钮反映您将返回的视图,请确保在您的子视图控制器上设置了该属性。
我有一个标签栏控制器,然后将其交给导航控制器(在带有 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
也可以自己实现
dialogViewController.NavigationItem.RightBarButtonItem = new UIBarButtonItem("Back",UIBarButtonItemStyle.Bordered,delegate(object sender,EventArgs e)
{
NavigationController.DismissModalViewControllerAnimated(true);
});