2016-12-16 3 views
1

Xamarin.iOSのナビゲーションコントローラでセグを設定しました。最初の画面は、PhoneNumbersのListを持つViewControllerだけで、ボタンをクリックすると電話番号のリストに追加されます。別のボタンをクリックすると、CallHistory2画面に行き、電話番号のリストを表示したいと思います。しかし、Listオブジェクトを2番目の画面に渡すのに問題があります。Xamarin iOS:Downcasting Segue.DestinationViewController Error

これは私がこの行でエラー

var callHistoryContoller = segue.DestinationViewController as CallHistory2; 

は 'にタイプ「UIKit.UIViewController」を変換できません取得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; 
    } 
} 

方法でありますPortableAppTest.iOS.CallHistory2 '参照変換、ボクシング変換、unboxing変換、ラッピング変換、またはnull型変換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 –

0

私は同じ問題に遭遇したときにこれが他の人に役立つことを願っています!

この

はXamarinsマルチスクリーンガイド

https://developer.xamarin.com/guides/ios/getting_started/hello,_iOS_multiscreen/hello,_iOS_multiscreen_quickstart/

からのものであり、私にとっての問題は、アプリが「PhoneWord」と呼ばれているということでしたが、これのViewControllerのコードは気づか(名前空間として「Phoneword」を使用していました小文字W)

正しく設定すると、期待通りに機能しました。