Xamarin,iOS从tabbarcontroller获取viewcontroller的实例

时间:2017-07-27 15:59:19

标签: ios xamarin

我需要一些帮助。我在Windows 10的Visual Studio 2017中使用Xamarin IOS。我使用了故事板,我有一个带有2个视图控制器的标签栏控制器。我的视图控制器是A_ViewController和B_ViewController。 我想要做的是单击A_ViewController中的一个按钮,该按钮在后台线程中调用API函数。该函数定期返回一些我希望在B_ViewController中的TextView中显示的字符串。

我有API回调工作,可以收到返回字符串,但我不知道如何获取B_ViewController实例来更新TextView并显示API返回字符串。

我知道tabbarcontroller有一个包含所有视图控制器实例的属性,因为我可以通过调用" this.TabBarController.SelectedIndex = 1;"来更改视图控制器。但是从A_ViewController如何使用tabbarcontroller(或任何其他方式)来获取B_ViewController的实例?

我已经从A_ViewController尝试了以下内容:

<div id="overview">

我的2个ViewControllers看起来像这样:

    B_ViewController vc = this.TabBarController.ViewControllers[1] as B_ViewController;
    vc.Output_Update("Hello World");  <--- This code creates an exception.

1 个答案:

答案 0 :(得分:0)

我认为mTextView尚未创建。如果您现在尝试设置文本,它将抛出NullReferenceException。

在我看来,这不是让控制器相互依赖的好方法。例如,A_ViewController不应该知道B_ViewController。而是将响应字符串保留在某处,并在B_Controller中可见时更新文本视图。