2016-08-25 10 views
0

私はxamarinフォームプロジェクトで作業していますが、私はxamarin iOSプロジェクトにバグがあります。現在、Master-Detail Pageの機能を実装しており、アクションバーにボタン項目を追加しました。私のメインページからアプリケーションを実行しているときに問題があります。私はバーガーメニューから別のページに移動してからMainPageに戻って、すべてがうまくいくようです。デバッグオンXamarin iOS廃棄オブジェクトにアクセスできないオブジェクト名: ''

[assembly: ExportRenderer(typeof(NavigationPage), typeof(CustomNavigationRenderer))] 
public class CustomNavigationRenderer : NavigationRenderer 
{ 
    private string pName; 
    private int pCCount; 
    private string pCName; 

    private App MainApp { get; set; } 
    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 
    } 
    private void CIndexChanged(int pCCount, string pName) 
    {  
     UIBarButtonItem providerBtn = TopViewController.NavigationItem.RightBarButtonItems[0]; 
    } 

私はそのようだTopViewController:これは私のiOS CustomNavigationRendererクラスは

System.ObjectDisposedException: Cannot access a disposed object.

Object name: 'CustomNavigationRenderer'.

です:私は別のオブジェクトに私のメインページカルーセルをスクロールしたときにしかし、私は、このようなエラーが発生しますアクションバーの項目をクリックしてくださいライン:

System.ObjectDisposedException: Cannot access a disposed object. 
Object name: 'CustomNavigationRenderer'. 

しかし、私はデバッグモードで、このようなラインを持っているTopViewController別のカルーセルビューオブジェクトに現在のオブジェクトからスクロールまで:

Xamarin_Forms_Platform_iOS_NavigationRenderer_ParentingViewController 

主な理由は何ですか?そのオブジェクトはアクションバーの項目に到達しません。

答えて

1

新しいナビゲーションページを作成せず、既存のナビゲーションページを再利用してこの問題を解決しました。ここでは、私が既存のリストからアイテムを取っている私のナビゲーションアイテムメソッドです。私はメインページを再利用しました:

private void ListView_ItemSelect(object sender, SelectedItemChangedEventArgs e) 
     { 
      var selectedItem = (MasterMenuItem)((ListView)sender).SelectedItem; 

      MainPage mainPage = (App.Current.MainPage as MainPage); 
      switch (selectedItem.KeyIndexName) 
      { 
       case "MainPage": 
        mainPage.Detail = mainPage.MainPageDetail; 
        break; 
       case "AAA": 
        if(aaa==null) 
         aaa = new NavigationPage(new AaaPage()); 
        mainPage.Detail = aaa; 
        break; 
       case "BBB": 
        if (bbb== null) 
         bbb = new NavigationPage(new BbbPage()); 
        mainPage.Detail = bbb; 
        break; 
       case "CCC": 
        if (ccc == null) 
         ccc = new NavigationPage(new CccPage()); 
        mainPage.Detail = ccc; 
        break; 
      }; 
      mainPage.IsPresented = false; 
     } 
関連する問題