Iphone Xcode:视图控制器和应用程序代理之间的连接
这可能是一个noob问题,但我无法理解 如何在2个视图控制器或视图控制器与appdelegate之间建立连接? 我通常会将以下内容添加到我的应用程序代理“h”文件中 它会给你一组数字,表明存在连接 但是,正如您所知,对于xcode 4,这种情况发生了变化,因为您通常不再使用main.xib来创建连接,几乎所有这些连接都是通过编程实现的 我尝试了所有方法,从使用相同的代码而不使用“IBOutlet”到添加:Iphone Xcode:视图控制器和应用程序代理之间的连接,iphone,objective-c,xcode,cocoa-touch,ipad,Iphone,Objective C,Xcode,Cocoa Touch,Ipad,这可能是一个noob问题,但我无法理解 如何在2个视图控制器或视图控制器与appdelegate之间建立连接? 我通常会将以下内容添加到我的应用程序代理“h”文件中 它会给你一组数字,表明存在连接 但是,正如您所知,对于xcode 4,这种情况发生了变化,因为您通常不再使用main.xib来创建连接,几乎所有这些连接都是通过编程实现的 我尝试了所有方法,从使用相同的代码而不使用“IBOutlet”到添加: rootViewController = [[RootViewController]all
rootViewController = [[RootViewController]alloc] init;
但似乎什么都不管用
有人能帮忙吗
提前感谢您基本上希望在应用程序代理中创建视图控制器的ivar
ViewController *myVC;
@property (nonatomic, retain) IBOutlet ViewController *myVC;
然后在实现文件中综合它
然后,当视图控制器加载时,调用以下内容:
- (void)viewDidLoad {
AppDelegateClass *appDelegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
appDelegate.myVC = self;
}
此时,您现在可以从应用程序代理直接连接到视图控制器。类似地,您也可以从视图控制器调用app delegate方法。在这种情况下,您需要在视图控制器的标题中设置一个委托
id delegate;
@property (nonatomic, assign) id delegate;
在实现文件中再次合成它
现在,当您在viewDidLoad
中时,您可以调用如下内容:
- (void)viewDidLoad {
self.delegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
}
这将为您提供所需的一切,因此我希望这对您使用XCode 4中的interface builder实现这一点有所帮助。我制作了一个关于如何做的短片:
您看过通知了吗?我还没有在XCode 4上尝试过,但它可能对你有用。无法使用通知,因为我实际上必须在它们之间进行通信。并从appdelegate更改我的rootviewcontroller上的内容!我知道这是一个老问题,但我认为这不值得单独提一个问题:我尝试了你答案的第一部分(connection viewController->appDelegate),但在
appDelegate.myVC=self
,Xcode说“ARC不允许将Objective-C指针隐式转换为'int*'。
。你的答案是非ARC的吗?如果是这样的话,你能帮我一下吗?这是在ARC之前写的,但它不应该受到影响,因为没有调用retain
或release
。确保已准备好适当的@property
函数(在本例中,它类似于@property(非原子,强)id委托)。此外,请确保传递的变量正确。您收到的错误,特别是
int*`部分,一定要查看。int
不应作为指针传递,即int*
。我希望这有帮助
id delegate;
@property (nonatomic, assign) id delegate;
- (void)viewDidLoad {
self.delegate = (AppDelegateClass *)[[UIApplication sharedApplication] delegate];
}