在iPhone上构建多视图应用程序

Tom*_*mmy 8 iphone cocoa-touch

我有一个带有根视图控制器,主视图控制器和辅助视图控制器的应用程序.我希望能够从辅助视图控制器向主视图控制器发送消息.如何获得对主数据库的引用,以便我可以向其发送消息?有没有更好的方法来构建这个?

Jon*_*son 7

简短的回答:你可以像这样回到你的应用程序代表:

YourAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)

您可能已经在应用程序委托类中指向了根视图控制器.您可能有指向根控制器对象中的主视图控制器和辅助视图控制器的指针.所以,你可以写这样的代码:

SecondaryViewController *primary = delegate.rootController.primaryController;
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据自己的内容向其发送消息.不需要出口; 只是每个视图控制器的属性.

有许多更长的答案,并且还讨论了为什么这种做法可能有问题,因为它引入了对象之间可能不需要的联系.在"纯粹的"面向对象设计中,您将遵循干净的设计模式,在各个方向上的对象之间具有明确的链接,从而允许您更好地重用代码.

另一种选择是将指针传递给类在初始化时需要的对象.为视图控制器类实现一个新的initWithSomethingOrOther,并将对象作为参数传递.缓存您需要的这些指针(不要忘记保留它们)以供以后使用.


Eri*_*lje 0

如果控制器是从 NIB 加载的,您可以在辅助控制器上定义一个插座,并将其连接到界面构建器中的主控制器。