我已经将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.
答案 0 :(得分:3)
我不能告诉你为什么,但我可以告诉你如何找到问题。在FlashCardView子类中,添加以下方法:
- (void)setTag:(NSInteger)theTag
{
assert(theTag != 1);
[super setTag:theTag];
}
然后,当将标记设置为1时,断言将触发,您可以查看堆栈跟踪并查看其来源。
或者,删除断言,并在超级消息上添加断点。
PS:确保启用例外!
答案 1 :(得分:0)
非常感谢你的帮助,我发现当我打算输入其他内容时,我意外输入了子类的变量,将标记设置为1. @Sunny,谢谢你告诉我仔细检查。