我在Xamarin.iOS中使用导航控制器设置了一个segue。第一个屏幕只是一个具有phoneNumbers列表的ViewController,并在单击按钮时添加到电话号码列表中。单击其他按钮时,我想转到CallHistory2屏幕并显示电话号码列表。但是,我无法将List对象传递到第二个屏幕。
这是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' to' PortableAppTest.iOS.CallHistory2'通过引用转换,装箱转换,拆箱转换,换行转换或null类型转换PortableAppTest.iOS
当我将CallHistory2
更改为UITableViewController
时,错误就会消失,但callHistoryController
不会包含对我的CallHistory2
类的引用(实现{{1}而不是通用的UITableViewController
类。
如何解决此问题?任何帮助表示赞赏!
答案 0 :(得分:0)
尝试以下,它会起作用。
if ( segue.DestinationViewController.GetType() == typeof(CallHistory2))
{
CallHistory2 callHistoryContoller = (CallHistory2)segue.DestinationViewController
callHistoryContoller.PhoneNumbers = PhoneNumbers;
}
答案 1 :(得分:0)
我希望这可以帮助别人,因为我遇到了同样的问题!
这是来自Xamarins Multiscreen指南
我的问题是该应用程序被称为“PhoneWord”,但此Viewcontroller的代码使用“Phoneword”作为命名空间(注意小写W)
一旦我正确设置它就会按预期工作。