我正在使用xib为我的项目创建视图.条件是:
我有多个UIView IBoutlet的对象.
IBOutlet UIView *viewOpenDoor; IBOutlet UIView *viewOpenDoor_Second;
viewOpenDoor仅连接到xib中的一个视图.
现在我使用此代码在viewdidload方法中多次重用相同的视图 –
[viewOpenDoor setFrame:CGRectMake(30,80,viewOpenDoor.frame.size.width,viewOpenDoor.frame.size.height)]; [self.view addSubview:viewOpenDoor]; viewOpenDoor.layer.borderColor = [UIColor blackColor].CGColor; viewOpenDoor.layer.borderWidth = 0.9f; viewOpenDoor.layer.cornerRadius = 6.0f; [viewOpenDoor setHidden:YES]; viewOpenDoor_Second = [[UIView alloc] init]; viewOpenDoor_Second = [viewOpenDoor copy]; [viewOpenDoor_Second setFrame:CGRectMake(184,viewOpenDoor.frame.size.height)]; [self.view addSubview:viewOpenDoor_Second];
它给予例外 –
-[UIView copyWithZone:]: unrecognized selector sent to instance 0x95ba140 Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: '-[UIView copyWithZone:]: unrecognized selector sent to instance 0x95ba140'
所以,我的问题是如何重用这个在xib中创建的IBOutlet对象,多次使用不同的实例?
解决方法
您将xib加载到UINib并从该UINib实例化所需的所有副本.
然后访问整个xib副本的出口.您无法复制视图,只能从同一个UINib中实例化多个“副本”.
如果计划稍后创建更多,则可以将UINib存储在实例变量中.