'[[myView viewWithTag:tag] removeFromSuperview]'删除我的所有UIButtons

时间:2012-10-04 06:20:57

标签: ios uiview

出于某种原因,我似乎无法在不删除所有UIButton的情况下删除UIImageView。所有子视图都添加到我的主视图_ourView和UIButtons没有给出标签(默认为0),我的图像被赋予了tag = 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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

0是标签的默认值...所以第一个视图没有标签,这可能不是你想要的。

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

NSLog(@"removing %@", hangmanView)

答案 2 :(得分:0)

想到我在将它们添加到superview之后意外地释放了我的按钮,所以它们在setNeedsDisplay之后消失了。谢谢你的帮助。我只是对Objective c的新手,并认为addSubview消息将subView的控制权交给了superView。