2014-02-26 159 views
1

我用這個簡單的代碼爲我的UI:上缺少DateTimeElement(Monotouch.Dialog)後退按鈕

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,編譯並試用了它,但是行爲相同。我正在爲其他屏幕使用故事板,也許它與此有關?

感謝您的任何幫助

+1

檢查某處您隱藏了導航控制器的後退按鈕。無論是'SetHidesBackButton'還是'HidesBackButton'。 – Krumelur

回答

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); 
} 

它仍然是一個黑客,但在你的代碼中的至少一個正在運行的:-)