0

出于某种原因,我似乎无法在不删除所有 UIButton 的情况下删除 UIImageView。所有子视图都添加到我的主视图 _ourView 和 UIButtons 没有被赋予标签(默认 0),我的图像被赋予标签 = 5。

当我打电话

NSInteger o = [obj intValue]; //This is the letter "O" not 0, and o = 5 in this case (which is what my subview tag is)
UIView *hangmanView = [_ourView viewWithTag:o];
[hangmanView removeFromSuperview];
[_ourView setNeedsDisplay];

我所有的按钮也消失了。

任何指针?

编辑:如果您想查看更多代码,我已将我的项目上传到 github。这是文件的链接:https ://github.com/elayman/Hangman/blob/master/Hangman/HangmanViewController.m#L172

4

3 回答 3

1

您已经将按钮添加到图像视图中,或者与该标记匹配的视图是按钮的超级视图。

在调试器中检查标记值是什么(它可能不是您认为的那样)以及 viewWithTag 返回的视图是什么。

无论如何,标签在大多数情况下都是无用的。为什么不使用 outlet 或 outlet 集合,它更加明确和可读。

于 2012-10-04T06:26:12.257 回答
0

0 是标签的默认值...因此它采用没有标签的第一个视图,这可能不是您想要的。

记录您删除的内容,以便查看实际发生的情况:

NSLog(@"removing %@", hangmanView)
于 2012-10-04T06:40:24.433 回答
0

发现我在将按钮添加到超级视图后意外释放了按钮,因此它们在 setNeedsDisplay 后消失了。谢谢你的帮助。我只是目标 c 的新手,并认为 addSubview 消息将 subView 的控制权交给了 superView。

于 2012-10-06T00:16:19.590 回答