Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to remove subviews from scrollview?

how do i remove all subviews from my scrollview...

i have a uiview and a button above it in the scrollview something like this....

here is my code to add subview in scroll view

-(void)AddOneButton:(NSInteger)myButtonTag { lastButtonNumber = lastButtonNumber + 1;  if ((lastButtonNumber == 1) || ((lastButtonNumber%2) == 1)) { btnLeft = 8;} else if ((lastButtonNumber == 2) || ((lastButtonNumber%2) == 0)) { btnLeft = 162; } CGRect frame1 = CGRectMake(btnLeft, btnTop, 150, 150); CGRect frame2 = CGRectMake(btnLeft, btnTop, 150, 150); UIButton *Button = [UIButton buttonWithType:UIButtonTypeCustom]; Button.frame = frame1; Button.tag = myButtonTag; [Button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; [Button setBackgroundColor:[UIColor clearColor]]; [Button setBackgroundImage:[UIImage imageNamed:@"WaitScreen.png"] forState:UIControlStateHighlighted];      GraphThumbViewControllerobj = [[GraphThumbViewController alloc] initWithPageNumber:[[GraphIdArray objectAtIndex:myButtonTag]intValue]];     GraphThumbViewControllerobj.view.frame=frame2;     GraphThumbViewControllerobj.lblCounter.text=[NSString stringWithFormat:@"%d of %d",myButtonTag+1,flashCardsId.count];     GraphThumbViewControllerobj.lblQuestion.text=[flashCardText objectAtIndex:myButtonTag];     [myScrollView addSubview:GraphThumbViewControllerobj.view];   [myScrollView addSubview:Button];   if ((lastButtonNumber == 2) || ((lastButtonNumber%2) == 0)) { btnTop = btnTop + 162; } if (btnTop+150 > myScrollView.frame.size.height) { myScrollView.contentSize = CGSizeMake((myScrollView.frame.size.width), (btnTop+160));} } 

and here is the code to remove subviews

if(myScrollView!=nil) {         while ([myScrollView.subviews count] > 0) {             //NSLog(@"subviews Count=%d",[[myScrollView subviews]count]);             [[[myScrollView subviews] objectAtIndex:0] removeFromSuperview]; } 

alt text

like image 920
Rahul Vyas Avatar asked Aug 21 '09 08:08

Rahul Vyas


1 Answers

To remove all the subviews from any view, you can iterate over the subviews and send each a removeFromSuperview call:

// With some valid UIView *view: for(UIView *subview in [view subviews]) {     [subview removeFromSuperview]; }

This is entirely unconditional, though, and will get rid of all subviews in the given view. If you want something more fine-grained, you could take any of several different approaches:

  • Maintain your own arrays of views of different types so you can send them removeFromSuperview messages later in the same manner
  • Retain all your views where you create them and hold on to pointers to those views, so you can send them removeFromSuperview individually as necessary
  • Add an if statement to the above loop, checking for class equality. For example, to only remove all the UIButtons (or custom subclasses of UIButton) that exist in a view, you could use something like:
// Again, valid UIView *view: for(UIView *subview in [view subviews]) {     if([subview isKindOfClass:[UIButton class]]) {         [subview removeFromSuperview];     } else {         // Do nothing - not a UIButton or subclass instance     } }
like image 177
Tim Avatar answered Sep 21 '22 06:09

Tim