0

嗨,我有一种方法,可以通过单击创建 3 个视图;

-(void)method{

for (i=0; i<3; i++) {
NSLog(@"i is: %d",i);

NSLog(@"i is: %d",i);
userResizableView = [[SPUserResizableView alloc] initWithFrame:CGRectMake   (100,41,60,60)];
userResizableView.tag = i;

imageVw1 = [[UIImageView alloc]initWithFrame:userResizableView.bounds];
imageVw1.image = [UIImage imageNamed:@"redacted2.jpg"];
imageVw1.userInteractionEnabled=YES;
imageVw1.autoresizesSubviews = YES;
imageVw1.alpha = 0.93;  // for opacity
userResizableView.contentView = imageVw1;

userResizableView.delegate = self;
[userResizableView showEditingHandles];
currentlyEditingView = userResizableView;
lastEditedView = userResizableView;
[self.view addSubview: userResizableView];
[userResizableView release];


}   
}

现在在另一种方法中,我想隐藏我最后创建的这些视图。但我做不到。我隐藏我的观点就像-

-(void)Hide_method{
// int type instance variable, and a=0; in viewdidload;
userResizableView.tag = a;
userResizableView.hidden = YES;
a++;
}

但是只有一个视图是隐藏的,其余的都保留了,无论我点击 Hide_method 多少​​次,只有一个视图是隐藏的。

我的问题是如何隐藏我最后创建的最后一个视图。意味着视图像 3,2,1,0 一样隐藏。每次单击 hide_method 时。

任何想法或建议都将受到高度欢迎。

4

4 回答 4

0
-(void)Hide_method{
 // int type instance variable, and a=0; in viewdidload;
   //userResizableView.tag = a;
   SPUserResizableView *_view = (SPUserResizableView *)[self.view viewWithTag:a];
   userResizableView.hidden = YES;
   a++;
}
于 2013-04-09T08:48:11.523 回答
0

试试这个:

-(void)Hide_method{

   //UIView *v = [self.view viewWithTag:a];

    SPUserResizableView *v = (SPUserResizableView *)[self.view viewWithTag:a];

    if(v)
        [v removeFromSuperview];

   a++;
}
于 2013-04-09T08:53:34.370 回答
0

删除具有标签 = a 的视图的方法

for (UIView *subview in [self.view subviews])
    {
       if (subview.tag == a)
          {
            [subview removeFromSuperview];
          }
    }
于 2013-04-09T08:58:04.347 回答
0

提供unique tagclash与任何other subview一个self.viewsame tag任何一个数字一样999 +

相应地进行更改:

for (i=0; i<3; i++) {
  SPUserResizableView *userResizableView = [[SPUserResizableView alloc] initWithFrame:CGRectMake(100,41,60,60)];
  userResizableView.tag = 999+i;

  ..........
  ..........
}

现在hide method将是:

-(void)Hide_method{
  // find SPUserResizableView with unique tag
for (i=0; i<3; i++) {
  if(i == 2){
    SPUserResizableView*userResizableView = (SPUserResizableView *)[self.view viewWithTag:999+i];
    userResizableView.hidden = YES;
  }
}

编辑:要restore frame存储originaallocating view

CGRect prevFrame = userResizableView.frame //take frame while allocating userResizableView

现在restore,每当你想要original frame这样:

SPUserResizableView*userResizableView = (SPUserResizableView *)[self.view viewWithTag:999+2]; //get last userResizableView
userResizableView.frame = prevFrame;
于 2013-04-09T09:47:14.430 回答