我在Xcode中使用故事板创建了一个App。该应用程序包含一个UITabBarController(TBC)和一些UIViewControllers(VC),由TBC控制。
在AppDelegate中创建一个对象(让我们称之为“myMidi”),它将侦听传入的MIDI消息(CoreMidi)。所以我在我的VC中实现了这个myMidi-Object的接口。 我使用Interface Builder(IB)中的“Relationship”选项将视图连接到TBC。
在IB中创建的所有VC都是我自己的VC类的实例。正如我在上面提到的那样,在这个类中我实现了我在AppDelegate中创建的myMidi-Object的接口。 因此,每个VC实例都拥有myMidi-Object的地址,现在需要在AppDelegate中创建的唯一引用。
所以我想知道如何访问当前显示的当前VC或TBC以将此引用传递给我的VC类?
或者我怎么能解决这个问题。我想我应该在AppDelegate的某个地方做这个,或者我是否应该在TBC中保存引用并在创建VC时将其传递给每个新的VC?
答案 0 :(得分:1)
如果我理解正确,您希望您的MyMidi
班级的当前(仅?)实例可供您的VC使用吗?
如果您只有一个实例,请考虑将MyMidi
设为单例类,并为其提供一个类方法àla+ (MyMidi *)sharedInstance;
,它始终返回(并且懒惰地初始化)同一个对象。这样,您就可以从任何地方访问它。
请参阅this question,了解如何在Cocoa / Cocoa Touch中实现单例。
答案 1 :(得分:0)
使用nsdefaults setObjec:forKey:
传递对象并将其移到您想要的位置。或者在appdelegate中创建一个属性并通过
AppDelegate* appDelegate = (TappAppDelegate*) [[UIApplication sharedApplication] delegate];
appDelegate.object = yourObject;