UIButtons的子视图 - 如何将按钮连接到IBActions

时间:2013-07-04 00:42:56

标签: uibutton connection storyboard xib subview

我正在尝试创建一个使用主视图并且在其中具有较小子视图的简单应用程序。我需要在子视图中有按钮,我无法获得按钮的连接工作。我做了以下事情:

  • 创建一个新的基于视图的项目,它给了我ViewController.h& .m,MainStoryboard.storyboard和AppDelegate.h& .M。
  • 使用NewFile创建子视图 - Objective-C类 - 然后将其命名为“subView1”并使其成为UIViewController的子类并使用xib复选框进行检查。
  • 这给了我subView1.h& .m文件和subView1.xib。
  • 然后我通过在属性检查器中将其大小设置为“FreeForm”然后在大小检查器中指定宽度(到280)和高度(到300)来重新调整xib中的子视图的大小。我还改变了背景颜色,以区别于主视图。
  • 然后我将UIButton拖入subView并使用touchupinside将其作为IBAction(我命名为“clickButton1”)连接到subView1.h文件。
  • 仅出于测试目的,我使用一个简单的NSLog来检查我放在subView.m文件中的按钮的功能,如下所示:
  

- (IBAction)clickButton1:(id)sender {

     

NSLog(@“It Worked!”);

     

}

  • 在viewDidLoad中的ViewController.m文件中,我添加了以下代码,将子视图添加到主视图中:
  

subView1 * sv1 = [[subView1 alloc] init];

     

sv1.view.frame = CGRectMake(20,120,280,300);

     

[self.view addSubview:sv1.view];

这一切都运行良好,当我运行应用程序时,我得到主视图,子视图按预期显示。问题是,当我点击位于子视图中的按钮时,它会崩溃并出现以下错误:

  

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xe00000008)

根据我的阅读,我相信这可能与我如何添加子视图以及我使用ARC这一事实有关。添加子视图时会自动释放,因此子视图中的所有按钮/连接等都会丢失。

所以我的两个问题是1)我在这里错过了一些愚蠢的东西并且有一个简单的解决方法吗? 2)这是一种创建应用程序的合适方式,该应用程序使用带有按钮的子视图,还是有更好的方法?感谢任何花时间回答的人!

1 个答案:

答案 0 :(得分:0)

我试着重申你说的话。

因此,您首先制作了基于视图的应用程序(选中“使用故事板”复选框),然后在故事板中放置一个按钮。然后,您可以通过控制将按钮拖动到"ViewController.h"文件。如果这是对的,你应该只能把

NSLog(@"It Worked!");

在方法实现中(至少,可以做到这一点)