DateTimeElement (Monotouch.Dialog) 上缺少后退按钮
Posted
技术标签:
【中文标题】DateTimeElement (Monotouch.Dialog) 上缺少后退按钮【英文标题】:Missing Back-Button on DateTimeElement (Monotouch.Dialog) 【发布时间】:2014-02-26 13:07:32 【问题描述】:我将这段简单的代码用于我的 UI:
challengeStartTime = new DateTimeElement("Start Time",DateTime.Now);
Root = new RootElement ("Add Event")
new Section ("")
challengeStartTime
;
我使用这段代码一段时间,一切都按预期工作。现在我将应用程序迁移到 ios 7 并且出现了这种奇怪的行为: 1. 导航到 DateTimeElement 2. 导航回上一个屏幕(NavigationController-Bar 中有通常的后退按钮) 3. 再次导航到 DateTimeElement (例如,如果我输入了错误的时间) 4. NavigationController 中没有返回按钮。无法返回。
我再次验证了我的旧版本(Appstore,“win4youth”),它可以正常运行。
有什么想法会导致这个奇怪的问题吗?我已经下载了当前版本的https://github.com/migueldeicaza/MonoTouch.Dialog,编译并尝试了它,但行为相同。我正在为其他屏幕使用故事板,也许与此有关?
感谢您的帮助
【问题讨论】:
检查代码中的某个地方是否隐藏了导航控制器的后退按钮。SetHidesBackButton
或 HidesBackButton
。
【参考方案1】:
感谢@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);
它仍然是一个 hack,但至少是一个有效的 :-)
【讨论】:
以上是关于DateTimeElement (Monotouch.Dialog) 上缺少后退按钮的主要内容,如果未能解决你的问题,请参考以下文章