缺少DateTimeElement上的后退按钮(Monotouch.Dialog)

时间:2014-02-26 13:07:32

标签: xamarin.ios xamarin monotouch.dialog

我在UI中使用这段简单的代码:

challengeStartTime = new DateTimeElement("Start Time",DateTime.Now);

Root = new RootElement ("Add Event") {
    new Section (""){
        challengeStartTime
    }
};

我使用此代码一段时间,一切都按预期工作。现在我将应用程序迁移到iOS 7并出现这种奇怪的行为:1。导航到DateTimeElement 2.导航回上一个屏幕(NavigationController-Bar中有通常的Back-Button)3。再次导航到DateTimeElement(例如,如果我输入错误的时间)4。NavigationController中没有后退按钮。无法导航回来。

我再次验证了我的旧版本(Appstore,“win4youth”),并且没有问题。

任何可能导致这个奇怪问题的想法?我已经下载了当前版本的https://github.com/migueldeicaza/MonoTouch.Dialog,已编译并尝试过,但行为相同。我正在为其他屏幕使用故事板,也许它与此相关?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

感谢@Krumelur指出正确的方向!

我的DialogViewController中有这个代码:

public override void ViewDidAppear (bool animated)
{
    //this "hack" is necessary because we use a DialogViewController together with a Storyboard and have no control over the constructor
    this.NavigationItem.HidesBackButton = false;

    base.ViewDidAppear (animated);
}

这似乎导致了这个问题。奇怪的是,在iOS 7之前,它正在运行。经过一番研究后,我找到了这个帖子:http://forums.xamarin.com/discussion/8291/navigationcontroller-missing-back-button-when-coming-from-the-third-level-to-the-second-level

这为我提供了一个解决方案:

public override void ViewWillAppear (bool animated)
{
    base.ViewWillAppear (animated);

    NavigationItem.SetHidesBackButton (false, false);
}

public override void ViewWillDisappear (bool animated)
{
    base.ViewWillDisappear (animated);

    NavigationItem.SetHidesBackButton (true, false);
}

它仍然是一个黑客,但至少是一个工作: - )