我正在尝试创建一个简单的应用程序,它使用主视图并在其中有一个较小的子视图。我需要在子视图中有按钮,但我无法让按钮工作的连接。我做了以下事情:
- 创建一个新的基于 View 的项目,它给了我 ViewController.h & .m、MainStoryboard.storyboard 和 AppDelegate.h & .m。
- 使用 NewFile - Objective-C 类创建子视图 - 然后将其命名为“subView1”并使其成为 UIViewController 的子类并选中 with xib 复选框。
- 这给了我 subView1.h &.m 文件和 subView1.xib。
- 然后我在 xib 中重新调整子视图的大小,方法是在属性检查器中将其大小设置为“FreeForm”,然后在大小检查器中指定宽度(到 280)和高度(到 300)。我还更改了背景颜色以将其与主视图区分开来。
- 然后我将一个 UIButton 拖入 subView 并使用 touchupinside 将其作为 IBAction(我将其命名为“clickButton1”)连接到 subView1.h 文件。
- 仅出于测试目的,我使用了一个简单的 NSLog 来检查我放置在 subView.m 文件中的按钮的功能,如下所示:
-(IBAction)clickButton1:(id)sender {
NSLog(@"成功了!");
}
- 在 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) 这是创建使用带有按钮的子视图的应用程序的适当方法,还是有更好的方法?感谢任何花时间回答的人!