在另一个视图中访问故事板进度条

时间:2015-02-12 18:50:48

标签: ios

我有一个带有一些标签和进度条的故事板视图控制器。

在我看来,我用以下内容加载了故事板视图:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:[NSBundle mainBundle]];
GeodatebaseLoadingViewController *geodatabaseLoading = [storyboard instantiateViewControllerWithIdentifier:@"GeodatabaseLoading"];
[self.view addSubview:geodatabaseLoading.view];

编辑: 我将进度条链接到GeodatabaseLoading类,并使用geodatabaseLoading.progressBar

访问它

我这样做了吗?

由于

2 个答案:

答案 0 :(得分:1)

您无法访问刚刚创建的viewcontroller实例中的进度条,因为在您在屏幕上显示视图之前,它的视图不会被加载。这意味着您在此时无法访问。

如果您要更新geodatabaseLoading中的进度条,则应在GeodatebaseLoadingViewController内定义一个ivar,并在需要时设置其值。然后在GeodatebaseLoadingViewController viewWillAppear方法中,您可以使用您创建的ivar设置实际进度条的值(现在保证存在)。

您的代码在当前状态下可以正常工作,但这是一个需要改变的糟糕做法。您不能随意将视图添加到屏幕,以便您可以访问连接到其子视图的插座。

答案 1 :(得分:0)

添加一个继承UIViewController的新类。让我们调用它NorCalKnockOutViewController在界面构建器中,转到类检查器并将加载控制器的类设置为这个新类。

将您的代码更改为:

NorCalKnockOutViewController *loading = [storyboard instantiateViewControllerWithIdentifier:@"Loading"];

CTRL将进度条拖动到类的标题中,以便为进度条创建IBOutlet。称之为progressBar

您现在可以使用以下代码在代码中访问它:

UIProgressBar *pBar=loading.progressBar;