这可能是一个菜鸟问题,但我无法理解它。
如何在 2 个视图控制器或一个视图控制器与我的应用程序代理之间建立连接?
我通常做的是将以下内容添加到我的应用程序委托“h”文件中
@class RootViewController;
@interface TabBarWithSplitViewAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
RootViewController *rootViewController;
}
@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
@end
然后在 Interface Builder 中创建连接。从我的根视图控制器到应用程序委托,并自动告诉我那是我上面添加的 rootViewController。
如果您在应用程序委托“m”文件上执行此操作:
#import "RootViewController.h"
NSLOG(@"Controller %@",rootViewController);
它会给你一堆数字,表明存在连接
但正如您所知,在 xcode 4 中,这种情况发生了变化,因为您通常不再拥有可以创建连接的 main.xib,您几乎可以通过编程方式完成所有这些连接。
我已经尝试了一切,从使用相同的代码而不使用“IBOutlet”到添加:
rootViewController = [[RootViewController]alloc] init;
但似乎没有任何作用。
有人可以帮忙吗?
提前致谢
您基本上需要在应用程序委托中创建视图控制器的 ivar。
ViewController *myVC;
@property (nonatomic, retain) IBOutlet ViewController *myVC;
然后综合到实现文件中。
然后,当视图控制器加载时,调用以下内容:
- (void)viewDidLoad {
AppDelegateClass *appDelegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
appDelegate.myVC = self;
}
此时,您现在可以从应用程序委托直接连接到视图控制器。同样,您可以执行相反的操作,从视图控制器调用应用程序委托方法。在这种情况下,您需要在视图控制器的标头中设置委托。
id delegate;
@property (nonatomic, assign) id delegate;
再次在实现文件中综合它。
现在当你在viewDidLoad
,你会这样称呼:
- (void)viewDidLoad {
self.delegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
}
这应该能为您提供开始所需的信息,所以我希望能有所帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)