0

我有一個UISplitViewController,它是一個主視圖控制器,它是一個表和一個詳細視圖控制器。更改詳細信息視圖控制器上的主視圖控制器項目單擊UISplitViewController

我已經實現了它像這樣: -

MainViewController.cs

public override void ViewDidLoad() 
    { 
     UpdateView(masterVC,detailVC); 
    } 
    public void UpdateView(UIViewController master, UIViewController detail) 
    { 
     this.ViewControllers = new ViewControllers[]{master, detail}; 
    } 

這工作得很好。現在我想在用戶單擊主視圖控制器中的一行時將詳細視圖控制器更改爲另一個視圖控制器。

我要做的就是: -

public override void RowSelected(UITableView tableView, NSIndexPath indexPath) 
    { 
      var mainVC = StoryBoard.InstantiateViewController("Main_VC") as MainViewController; 
      mainVC.UpdateView(mainVC.ViewControllers[0], newDetailVc); 
    } 

這並不做任何事情,不改變局部視圖到新的一個。我怎樣才能實現這個?

回答

0

您重新實例化您的主視圖控制器,而不是提供指向您在應用程序啓動時加載的原始指針,就像應用程序關心的一樣,只需更新「主」視圖控制器的詳細視圖這只是坐在記憶中。

當您在MainViewController ViewDidAppear方法啓動應用程序創建一個靜態引用本身,像這樣:

public static MainViewController MVCPointer {get; private set;} 

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

    MVCPointer = (self as MainViewController). 
} 

然後在rowselected你會做以下幾點:

public override void RowSelected(UITableView tableView, NSIndexPath indexPath) 
{ 
     var mainVC = StoryBoard.InstantiateViewController("Main_VC") as MainViewController; 
     mainVC.MVCPointer.UpdateView(mainVC.MVCPointer, newDetailVc); 
} 

有更爲整潔,這樣做的方法,上面只是適應當前代碼的一種快速方法,我個人存儲對AppDelegate內的靜態變量內的任何導航控制器的引用,以便我可以在任何地方訪問它,但是這對於您有許多不同的視圖控制器和導航控制器的應用程序。

做你想要什麼的另一種方法是你mainviewcontroller的參考傳遞給您的tableviewsource類(如果你使用一個)

這樣你可以簡單的做:

private static MainViewController MVCMain {get ; private set} 

public void nameofyourtableviewsource (object tableviewdata, MainViewController cont) 
{ 
     MVCMain = cont; 
} 

public override void RowSelected(UITableView tableView, NSIndexPath indexPath) 
{ 
     (mainVC.ViewControllers[0] as MainViewController).UpdateView(mainVC, newDetailVc); 
} 
+0

感謝回覆。在你的第一個解決方案中,什麼是MVCPointer? – user3034944

+0

對不起完美的分配給它一個類,我剛纔修復了上面的代碼片段,現在應該是有道理的。 – Digitalsa1nt

+0

我嘗試了第一種方法,但仍然和我的代碼一樣。詳細控制器不會更改 – user3034944

相關問題