Iphone UIView(子视图)不向AppDelegate发送iActions

Iphone UIView(子视图)不向AppDelegate发送iActions,iphone,cocoa-touch,uiview,uiapplicationdelegate,ibaction,Iphone,Cocoa Touch,Uiview,Uiapplicationdelegate,Ibaction,我遇到这个问题是因为我最初在主NIB中创建了所有内容,但在阅读之后,我了解到使用子视图更好 我已在AppDelegate中设置了iActions,并且已成功连接并加载了子视图。但是,当我尝试将子视图中的按钮连接到AppDelegate中的iActions时,iActions显示在“First Responder”下。它们似乎连接良好,但在运行应用程序时不会触发iActions(我已经用一些NSLog确认了这一点,iActions中的代码中没有错误)。我做错了什么 谢谢 AppDelegate只能

我遇到这个问题是因为我最初在主NIB中创建了所有内容,但在阅读之后,我了解到使用子视图更好

我已在AppDelegate中设置了iActions,并且已成功连接并加载了子视图。但是,当我尝试将子视图中的按钮连接到AppDelegate中的iActions时,iActions显示在“First Responder”下。它们似乎连接良好,但在运行应用程序时不会触发iActions(我已经用一些NSLog确认了这一点,iActions中的代码中没有错误)。我做错了什么


谢谢

AppDelegate只能用于非常特定的项目,如实现
UIApplicationDelegate
协议(即
ApplicationIDFinishLaunching
等方法)或在某些情况下存储全局变量

您应该将iActions和其他插座保存在各自的视图控制器文件中(即,如果您创建了MyViewController.h和MyViewController.m,它们与MyViewController.xib链接,其中有一些按钮、图像等)。然后,可以通过将所需的inspector控件(即TouchUpInside)拖动到文件的所有者来连接它们

为了更好地理解视图控制器,您应该阅读以下内容:

通常,最好为您将呈现给用户的每个视图创建一个唯一的视图控制器。例如,如果我有一个主屏幕,然后是一个“关于”或一个设置屏幕,我会让每个屏幕都有自己的视图控制器。与使用一个视图和隐藏/显示的一大堆子视图相比,它有助于更好地组织事物,还将提高加载时间和总体性能

更新关于访问应用程序代理的评论中的第二个问题:

首先,您需要将应用程序委托的.h文件(即导入“AppDelegate.h”)导入到要用于访问存储在应用程序委托文件中的任何变量、数组等的视图控制器.m文件中。确保在app delegate的.m文件中的app delegate的.h文件中合成创建的对象,以便创建getter和setter(以便您可以访问它们)

然后,在view controller.m文件中,无论使用哪种方法:

-(void)someMethod { 
 // here we just create a shortcut to the app delegate called "theAppDelegate"
 YourAppDelegateFileNameHere *theAppDelegate = (YourAppDelegateFileNameHere *)[[UIApplication sharedApplication] delegate];

 // now you can use the dot notation if you wanna access a variable
 int SomeNewInteger = theAppDelegate.someIntegerYouHaveStored;

 // or some array you have stored
 return [theAppDelegate.someArrayYouCreated count]; 
 }

希望有帮助

AppDelegate只能用于非常特定的项目,如实现
UIApplicationDelegate
协议(即
ApplicationIDFinishLaunching
等方法)或在某些情况下存储全局变量

您应该将iActions和其他插座保存在各自的视图控制器文件中(即,如果您创建了MyViewController.h和MyViewController.m,它们与MyViewController.xib链接,其中有一些按钮、图像等)。然后,可以通过将所需的inspector控件(即TouchUpInside)拖动到文件的所有者来连接它们

为了更好地理解视图控制器,您应该阅读以下内容:

通常,最好为您将呈现给用户的每个视图创建一个唯一的视图控制器。例如,如果我有一个主屏幕,然后是一个“关于”或一个设置屏幕,我会让每个屏幕都有自己的视图控制器。与使用一个视图和隐藏/显示的一大堆子视图相比,它有助于更好地组织事物,还将提高加载时间和总体性能

更新关于访问应用程序代理的评论中的第二个问题:

首先,您需要将应用程序委托的.h文件(即导入“AppDelegate.h”)导入到要用于访问存储在应用程序委托文件中的任何变量、数组等的视图控制器.m文件中。确保在app delegate的.m文件中的app delegate的.h文件中合成创建的对象,以便创建getter和setter(以便您可以访问它们)

然后,在view controller.m文件中,无论使用哪种方法:

-(void)someMethod { 
 // here we just create a shortcut to the app delegate called "theAppDelegate"
 YourAppDelegateFileNameHere *theAppDelegate = (YourAppDelegateFileNameHere *)[[UIApplication sharedApplication] delegate];

 // now you can use the dot notation if you wanna access a variable
 int SomeNewInteger = theAppDelegate.someIntegerYouHaveStored;

 // or some array you have stored
 return [theAppDelegate.someArrayYouCreated count]; 
 }

希望有帮助

谢谢!如何从视图控制器中的AppDelegate访问对象?我已经像这样声明了AppDelegate://Interface-AppDelegate-AppDelegate@属性(非原子,保留)AppDelegate*AppDelegate//执行委员会代表;appDelegate=(appDelegate)[[UIApplication sharedApplication]委托];然而,当我尝试做某事时,我总是得到“访问未知的getter方法”。抱歉,stackOverflow不允许我很好地格式化我的评论。请查看我的更新回复,了解如何正确调用它。这与应用程序委托有点不同,因为你不需要像你现在这样设置属性或合成它(这就是为什么你会得到未知的getter方法错误)。如果答案对你有用,请养成向上投票的习惯,选择最有用的答案。这有点像是在背后拍拍人们的帮助:)好吧,我发现我需要使用箭头语法(我试图做[theAppDelegate.networkClient sendMessage:@“whatever”];而实际上我需要[theAppDelegate->networkClient sendMessage:@“whatever”;)。然而,现在我在编译时没有收到错误,但应用程序只是崩溃。。。直到现在我才能够投票。需要这么高的声誉或类似的东西。:)谢谢你的帮助。你可能应该开始一个新问题,因为这有点偏离了你原来问题的主题。在你的新问题中,你能解释一下什么是
networkClient
?它只是一个您试图调用并传递变量的方法,还是您试图访问一个实例变量?另外,在控制台崩溃后(在XCode的Run菜单下)会显示什么错误消息。谢谢!如何从视图控制器中的AppDelegate访问对象?我已经声明了AppDelegate,如so://Interface-AppDe