objective-c - 从不同的 View Controller 访问属性

标签 objective-c ios cocoa-touch uiviewcontroller

我在我的一个 View Controller 中声明了这样的属性:

@property (nonatomic, retain) MPMusicPlayerController *musicPlayer;

如何从其他 View Controller 访问此属性?请记住,我使用的是 Storyboard,而不是以编程方式加载 View 。

我对此有点陌生..谢谢。

详细信息

我的 Root View Controller 中嵌入了一个包含该属性的 TableViewController。然后我有另一个从 Root View Controller 推送的 View Controller 。推送此 View 时,我希望调用 [musicPlayer play],但现在它无法识别 musicPlayer。

最佳答案

您需要从其他 Controller 获取对具有 musicPlayer 属性的 View Controller 的引用。你如何得到它取决于两个 Controller 是如何相关的。一个在介绍另一个吗?一个推另一个吗?一个是另一个的 child 吗?这些不同的关系需要不同的方式来访问另一个 Controller 。您需要提供更多关于您的应用程序结构的信息,以便我更全面地回答。

编辑后:

实现 prepareForSegue 以便您可以将信息传递给呈现的 View Controller :

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    TriggerViewController *dvc = (TriggerViewController *)segue.destinationViewController;
    dvc.tableViewReference = segue.sourceViewController.childViewControllers[0]
}

这里的 tableViewReference 是您尝试访问 musicPlayer 的 Controller 中的一个属性(tableViewReference 应该属于 TriggerViewController 类)。然后,在那个类中你可以这样调用 play:

[tableViewReference.musicPlayer播放];

关于objective-c - 从不同的 View Controller 访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206160/

相关文章:

ios - 从现有应用程序中排除 iPad 支持

ios - 是否可以直接从 appDelegate 获取 GPS 位置 ios8

ios - TableView Controller 没有显示 Assets 文件夹中的内容,或者根本没有显示任何内容

objective-c - Core Text CTFrame 上的可点击区域

ios - 带有 NSURLSession 的 Http/2 server_push

Objective-C 标准文档

objective-c - 试图检测抖动,从不调用motionEnded

objective-c - 根据关系表从父表获取记录 - CoreData

objective-c - 哪些 OS X 和 iOS 版本支持哪些 Unicode 版本?

iphone - UIButton 的按钮文本如何加下划线?