2013-04-05 76 views
1

我已经子类UIView类,我创建了一个循环中的这个类的多个实例(每次递增),但是当我尝试设置视图的标记,并将其记录到控制台完成创建后,它们全都具有1的标记,而不管我将标记设置为什么。子类UIView没有得到标记集

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

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

//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

包括您的代码与for循环 – 2013-04-05 12:04:31

+1

意味着一些代码中的其他地方可能是标记值更新一旦检查您的代码。 – Balu 2013-04-05 12:11:37

+0

请发布有关'从父视图获取视图'的代码 – 2013-04-05 12:12:35

回答

3

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

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

然后,无论是标签设置为1它,断言将火,你可以看看堆栈跟踪,看看它的来源。

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

PS:确保启用异常!

+0

感谢您的提问,以后可能会有所帮助,并且还会让我找到我无意中再次设置标记的位置。将标记为答案:) – 2013-04-05 13:37:08

0

嗨,感谢您的帮助,我发现当我打算放入其他东西时,我意外地输入了子类的变量,将标记设置为1. @Sunny,谢谢你让我仔细检查。