0

次のような階層があります。

NavigationController
  • 最初にプッシュViewController-ViewDidDisappear次のビューに移動するときに正しく起動します

  • DialogViewControllerリストを持つプッシュ-ViewDidDisappear次へ移動するときに発火

  • 各リストは新しいファイルを開きますDialogViewController-ViewDidDisappearファイルはありません

  • これには別のボタンを開くボタンがいくつかありますDialogViewController-VidDidDisappear決して発火しません

コード:

 public partial class CustomDialogController : DialogViewController {

    public CustomDialogController() : base (UITableViewStyle.Grouped, null, true) {
    }

    public override void ViewDidDisappear (bool animated)
    {
        base.ViewDidDisappear (animated);
        Console.WriteLine("Gone baby 2");
        // Never Fires
    }
  }

public partial class WorkoutsView : DialogViewController
{

    public override void ViewDidDisappear (bool animated)
    {
        base.ViewDidDisappear (animated);
        Console.WriteLine("Gone baby");
        // Here is where you can add your custom code for when the DialogViewController disappears
    }


    public WorkoutsView (MetaFitness.BL.MetaFitnessManager manager) : base (UITableViewStyle.Grouped, null, true)
    {
        this.Title ="Title";
        WorkoutViewModel WorkoutDetail = new WorkoutViewModel();
        //var bc = new BindingContext (this, WorkoutDetail, "Details");
        //detailView = new DialogViewController(bc.Root,true);
        List<Workout> workouts = manager.GetWorkouts ();

        var abc = new CustomDialogController();
        abc.Root = new RootElement("WorkoutsView");
        Root = abc.Root;
        Section section = new Section ("Workouts");
        foreach (var wo in workouts) {
            string name = string.Empty;

            CustomDialogController WorkoutController = new CustomDialogController();
            WorkoutController.Root = new RootElement(wo.Name);
            RootElement wSection = WorkoutController.Root;

            var s2 = new Section();
            var mvm2 = new MeasurementViewModel();
                            // the code for this is similar to CustomDialogController - never fires
            s2.Add(new MeasurementViewController(mvm2).Root);
            wSection.Add (s2);


            section.Add(wSection);  

        }
        Root.Add(section);
    }
}
4

1 に答える 1

2

UINavigationControllerそれはandの使い方ではありませんDialogViewController。の基本的な概念をUIViewController念頭に置いてください。1 つのコントローラーが画面いっぱいのコンテンツを処理します (iPhone の場合)。UIViewController'sつまり、コントローラーをスタックにプッシュする必要があります。これらのコントローラはそれぞれDialogViewControllers. MeasurementViewModelこれを言うと、 のセクション内にのビュー (ルート) を追加することWorkoutsViewは上記の概念の破綻であり、したがって、Apple の設計規則に違反しており、その結果、View*()メソッドが呼び出されないことが既にわかります。

代わりに、要素にコールバックを追加すると、そのうちの 1 つが新しいコントローラーをナビゲーション コントローラーのスタックにプッシュできます。

MT.Dialog の Github ページ ( https://github.com/migueldeicaza/MonoTouch.Dialog ) または Xamarin ブログ ( http://blog.xamarin.com/2012/02/10 ) で必要なすべてのドキュメントを見つけることができるはずです。 /easily-create-ios-user-interfaces-with-monotouch-dialog/

于 2012-12-08T17:55:48.250 に答える