Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Xcode:视图控制器和应用程序代理之间的连接_Iphone_Objective C_Xcode_Cocoa Touch_Ipad - Fatal编程技术网

Iphone Xcode:视图控制器和应用程序代理之间的连接

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

这可能是一个noob问题,但我无法理解

如何在2个视图控制器或视图控制器与appdelegate之间建立连接? 我通常会将以下内容添加到我的应用程序代理“h”文件中

它会给你一组数字,表明存在连接

但是,正如您所知,对于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;
}
此时,您现在可以从应用程序代理直接连接到视图控制器。类似地,您也可以从视图控制器调用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];
}