Subclassed UIView没有标记集

时间:2013-04-05 12:02:36

标签: iphone ios objective-c uiview subclass

我已经将UIView类子类化了,我在循环中创建了这个类的多个实例(每次都递增),但是当我尝试设置视图的标记,并在它们之后将其记录到控制台无论我将标记设置为什么,它们都被创建,它们都有1的标记。

任何帮助将不胜感激,谢谢!

我创建子视图的代码在这里:

//for() loop above with i as counter
FlashCardView *subview = [[FlashCardView alloc] initWithFrame:frame];
subview.delegate = self;
subview.viewNum=i+10; //My attempt at a workaround but I cannot get the view with this later so it is not very helpful
[subview setTag:i+10]; //Tried this and subview.tag=i+10;
NSLog(@"%d", subview.tag); //Prints correctly
//Gets added to parent later

NSLog会记录正确的标记,但是当我在UIView子类中记录标记时,它始终将其标记返回为1。此外,如果我在稍后调用的方法中打印父项的所有子视图(在viewcontroller中),则所有子视图都具有标记1.

2 个答案:

答案 0 :(得分:3)

我不能告诉你为什么,但我可以告诉你如何找到问题。在FlashCardView子类中,添加以下方法:

- (void)setTag:(NSInteger)theTag
{
  assert(theTag != 1);
  [super setTag:theTag];
}

然后,当将标记设置为1时,断言将触发,您可以查看堆栈跟踪并查看其来源。

或者,删除断言,并在超级消息上添加断点。

PS:确保启用例外!

答案 1 :(得分:0)

非常感谢你的帮助,我发现当我打算输入其他内容时,我意外输入了子类的变量,将标记设置为1. @Sunny,谢谢你告诉我仔细检查。