我有一个带有一些标签和进度条的故事板视图控制器。
在我看来,我用以下内容加载了故事板视图:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:[NSBundle mainBundle]];
GeodatebaseLoadingViewController *geodatabaseLoading = [storyboard instantiateViewControllerWithIdentifier:@"GeodatabaseLoading"];
[self.view addSubview:geodatabaseLoading.view];
编辑:
我将进度条链接到GeodatabaseLoading类,并使用geodatabaseLoading.progressBar
我这样做了吗?
由于
答案 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;