我需要一些帮助。我在Windows 10的Visual Studio 2017中使用Xamarin IOS。我使用的是故事板,并且我有一个带有2个视图控制器的标签栏控制器。我的视图控制器是A_ViewController和B_ViewController。 我想要做的是点击A_ViewController中的一个按钮,它在后台线程中调用API函数。该函数定期返回一些我希望在B_ViewController中的TextView中显示的字符串。Xamarin,iOS从tabbarcontroller获取viewcontroller的实例
我有API回调工作,可以接收返回的字符串,但我不知道我怎么能得到B_ViewController的实例来更新TextView并显示API返回字符串。
我知道tabbarcontroller有一个属性,其中包含所有视图控制器的实例,因为我可以通过调用“this.TabBarController.SelectedIndex = 1;”来更改视图控制器。但从A_ViewController中,我如何使用tabbarcontroller(或任何其他方式)来获取B_ViewController的实例?
我试着从A_ViewController如下:
B_ViewController vc = this.TabBarController.ViewControllers[1] as B_ViewController;
vc.Output_Update("Hello World"); <--- This code creates an exception.
我2个ViewControllers是这个样子:
public partial class A_ViewController : UIViewController
{
public override void ViewDidLoad(){
base.ViewDidLoad();
mbtnCallAPI.TouchUpInside += BtnCallAPI_TouchUpInside;
}
public void BtnCallAPI_TouchUpInside(object sender, EventArgs e) {
// Call API here. API Callback will return strings
// Send return string to B_ViewController's TextView.
}
}
public partial class B_ViewController : UIViewController
{
public void Output_Update(string msg) {
mTextView.Text += msg;
}
}
“此代码创建一个异常” - 什么是特定异常? – Jason
我得到一个空引用异常:对象引用未设置为对象的一个实例。我期待看到如何从TabBarController获取B_ViewController的实例。 – user2669496