子类化 UIView 未获得标记集



我已经子类化了一个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。

我不能告诉你原因,但我可以告诉你如何找到问题。在你的FlashCardView子类中,添加这个方法:

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

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

或者,删除assert,并在超级消息上放置一个断点。

PS:确保你启用了异常!

嗨,感谢您的所有帮助,我发现我无意中键入了子类的变量,当我打算放入其他东西时,将标记设置为1。@Sunny,谢谢你告诉我再三检查

最新更新