我的一个视图控制器中有一个像这样声明的属性:
@property (nonatomic, retain) MPMusicPlayerController *musicPlayer;
如何从其他视图控制器访问此属性?请记住,我正在使用故事板,而不是以编程方式加载视图。
我对此有点新鲜......谢谢。
详情
我的根视图控制器中嵌入了一个包含该属性的TableViewController。然后我有另一个从根视图控制器推送的视图控制器。按下此视图时,我希望调用[musicPlayer play],但现在它无法识别musicPlayer。
答案 0 :(得分:1)
一种方法是,您可以#import视图控制器到其他视图控制器并以这种方式访问属性。对于故事板,您可以在父视图和子视图之间使用控制器的prepareForSegue:
方法。在子视图中尝试类似childView *child = (childView *)segue.destinationViewController;
答案 1 :(得分:1)
您需要使用其他控制器的musicPlayer属性获取对视图控制器的引用。你如何得到这取决于两个控制器的相关性。是一个呈现另一个?一个人推到另一个?一个是另一个的孩子吗?这些不同的关系需要不同的方式来访问另一个控制器。您需要提供有关您的应用结构的更多信息,以便我更全面地回答。
编辑后:
实施prepareForSegue,以便您可以将信息传递给您呈现的视图控制器:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
TriggerViewController *dvc = (TriggerViewController *)segue.destinationViewController;
dvc.tableViewReference = segue.sourceViewController.childViewControllers[0]
}
这里tableViewReference是控制器中的一个属性,您尝试访问musicPlayer(tableViewReference应该是TriggerViewController类)。然后,在那个课程中你可以像这样打电话:
[tableViewReference.musicPlayer play];
答案 2 :(得分:0)
然后,您不必从根视图控制器访问musicPlayer属性,而是从表视图控制器访问。所以它会是这样的:
[rootViewController.containerView.tableViewController.musicPlayer play];