好的,所以我有一个viewController方法,它有一些用界面构建器创建的元素,有些我自己编码。
我在IB中创建了一个视图...让我们称之为viewOne。我创建了一个循环来创建按钮(通过代码)并将它们放在一个单独的视图(viewTwo)上。这是在类方法中完成的。但是,我希望每次单击其中一个按钮时打开我所看到的视图。所以我做了:
[button addTarget:self action:@selector(woogoo:)
forControlEvents:UIControlEventTouchUpInside];
woogoo课程做了以下事情:
+(void) woogoo:(id)sender {
//back button
[self.view addSubview:viewOne]
}
但是,单击按钮时程序崩溃。我确实尝试将woogoo作为实例方法,但在这种情况下它也会崩溃。我想要做的就是在单击按钮时显示viewOne。有什么想法我可以做什么?
答案 0 :(得分:0)
相反,为什么不将界面构建器中的IBAction连接到按钮,然后你可以只放你的[self.view addSubview:viewOne];进入IBAction方法。
PS。你在[self.view addSubview:viewOne]
之后错过了一个分号干杯
答案 1 :(得分:0)
没有足够的信息,但是当你在woogoo时,我猜想“viewOne”的内容有问题。在addSubview之前添加这一行,看看你在控制台上得到了什么:
NSLog("woogoo: %@", viewOne);
您应该看到类似的内容,它与您为viewOne创建的视图和框架类型相匹配。如果你看到(null)或其他东西,请检查viewOne的设置方式。
<UIView: 0x4519b70; frame = (10 1; 300 43); layer = <CALayer: 0x4519540>>
也许您可以发布有关如何/何时创建/初始化viewOne的更多信息。
答案 2 :(得分:0)
在+woogoo:
中,您调用self.view
。由于它是一个类方法,self
也是一个类,因此+view
也必须是一个类方法。你有没有把它作为一种课程方法?
如果没有,则需要使-woogoo:
成为实例方法,并且还需要调用-addTarget:…
实例方法的代码,然后向上传播。