2016-12-16 41 views
1

我在Xamarin.iOS中設置了一個導航控制器的segue。第一個屏幕只是一個ViewController,它具有一個phoneNumbers列表,並在點擊按鈕時添加到電話號碼列表中。當點擊不同的按鈕時,我想要進入CallHistory2屏幕並顯示電話號碼列表。但是,我無法將List對象傳遞給第二個屏幕。Xamarin iOS:Downcasting segue.DestinationViewController錯誤

這是ViewController.cs類的方法(第一屏)

public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender) 
{ 
    base.PrepareForSegue (segue, sender); 

    // set the View Controller that’s powering the screen we’re 
    // transitioning to 

    var callHistoryContoller = segue.DestinationViewController as CallHistory2; 

    //set the Table View Controller’s list of phone numbers to the 
    // list of dialed phone numbers 

    if (callHistoryContoller != null) { 
     callHistoryContoller.PhoneNumbers = PhoneNumbers; 
    } 
} 

我在這條線得到一個錯誤

var callHistoryContoller = segue.DestinationViewController as CallHistory2; 

無法將類型「UIKit.UIViewController」到' PortableAppTest.iOS.CallHistory2'通過參考轉換,裝箱轉換,拆箱轉換,包裝轉換或空類型轉換PortableAppTest.iOS

當我更改CallHistory2UITableViewController錯誤消失,但callHistoryController將不包含對我的CallHistory2類(實現UITableViewController)的引用,而是對通用的UITableViewController類引用。

我該如何解決此問題?任何幫助表示讚賞!

回答

0

嘗試以下,它將工作。

if (segue.DestinationViewController.GetType() == typeof(CallHistory2)) 
{ 
CallHistory2 callHistoryContoller = (CallHistory2)segue.DestinationViewController 
callHistoryContoller.PhoneNumbers = PhoneNumbers; 

} 
+0

當我嘗試這樣做時出現此錯誤:無法將類型'UIKit.UIViewController'轉換爲'PortableAppTest.iOS.CallHistory2'。它說一個潛在的解決方法是刪除多餘的轉換'(CallHistory2)',但當我刪除,我得到這個錯誤:「不能隱式轉換類型'UIKit.UIViewController'到'PortableAppTest.iOS.CallHistory2'」 –

+0

什麼類型的CallHistyory2 ?我的意思是什麼基礎類? – Darshana

+0

UITableViewController –