Pon*_*otg 8 iphone xcode cocoa-touch objective-c ipad
这可能是一个noob问题,但无法理解它.
如何在2个viewcontrollers或视图控制器和我的appdelegate之间建立连接?我通常做的是将以下内容添加到我的app委托"h"文件中
@class RootViewController;
@interface TabBarWithSplitViewAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
RootViewController *rootViewController;
}
@property (nonatomic, retain) IBOutlet RootViewController *rootViewController;
@end
Run Code Online (Sandbox Code Playgroud)
然后在Interface Builder中创建一个连接.从我的根视图控制器到应用程序委托,并自动告诉我这是我上面添加的rootViewController.
如果你在app委托"m"文件上执行此操作:
#import "RootViewController.h"
NSLOG(@"Controller %@",rootViewController);
Run Code Online (Sandbox Code Playgroud)
它会给你一堆数字,表明有连接
但正如您所知,xcode 4已经发生了变化,因为您通常不再拥有可以创建连接的main.xib,而是以编程方式执行几乎所有这些连接.
我已尝试使用相同的代码而不使用"IBOutlet"添加:
rootViewController = [[RootViewController]alloc] init;
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.
任何人都可以帮忙吗?
提前致谢
jus*_*tin 16
您基本上想要在应用程序委托中创建视图控制器的ivar.
ViewController *myVC;
@property (nonatomic, retain) IBOutlet ViewController *myVC;
Run Code Online (Sandbox Code Playgroud)
然后在实现文件中合成它.
然后当视图控制器加载时,调用以下内容:
- (void)viewDidLoad {
AppDelegateClass *appDelegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
appDelegate.myVC = self;
}
Run Code Online (Sandbox Code Playgroud)
此时,您现在可以从应用程序委托直接连接到视图控制器.同样,您也可以从视图控制器调用app delegate方法.在这种情况下,您将在视图控制器的标题中设置一个委托.
id delegate;
@property (nonatomic, assign) id delegate;
Run Code Online (Sandbox Code Playgroud)
再次在实现文件中合成它.
现在,当你在viewDidLoad
,你会打电话给这样的事情:
- (void)viewDidLoad {
self.delegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
}
Run Code Online (Sandbox Code Playgroud)
这应该会给你你需要的东西,所以我希望有所帮助
归档时间: |
|
查看次数: |
32430 次 |
最近记录: |