GMGridView selection is overriding

767 Views Asked by At

enter image description hereenter image description hereI got weird problem, while using GMGridView. Actually i'm using GMGridview to show the restaurant tables. If i selected Table1(that means first cell), It should change to redColor(that means it is occupied table). I did this, But my problem is when i select a cell 1(redcolor), that redcolor is showing in all classes whereever i used GMGridview. Thats is completely wrong, without any selection in the another class, it is showing as selected one.

In the images below, if i selected 1, it is showing 7 also selected.....

And my code is

- (GMGridViewCell *)GMGridView:(GMGridView *)gridView cellForItemAtIndex:(NSInteger)index{



    CGSize size = [self GMGridView:gridView sizeForItemsInInterfaceOrientation:[[UIApplication 
sharedApplication] statusBarOrientation]];


    GMGridViewCell *cell = [gridView dequeueReusableCell];


    int isOccupied = [[[self.arrayOfoccupiedTables objectAtIndex:index] objectForKey:@"TStatus"] intValue];


    if (!cell)

    {

        cell = [[[GMGridViewCell alloc] init] autorelease];


        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];

        cell.contentView = view;

    }


    [[cell.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];


    UILabel *label = [[UILabel alloc] initWithFrame:cell.contentView.bounds];

    label.autoresizingMask = UIViewAutoresizingFlexibleWidth | 

UIViewAutoresizingFlexibleHeight;

    label.textAlignment = UITextAlignmentCenter;

    label.backgroundColor = [UIColor clearColor];

    label.font = [UIFont fontWithName:APPFONTLI size:22.0f];

    label.adjustsFontSizeToFitWidth = YES;



    if (isOccupied == 100001) {


        label.textColor = [UIColor whiteColor];

        label.highlightedTextColor = [UIColor blackColor];

        label.backgroundColor = [UIColor redColor];//redColor];

        //colorWithRed:43.0f/255.0f green:150.0f/255.0f blue:0.0f/255.0f alpha:1.0f];//GreenColor

        label.text  = [[self.filtredArray objectAtIndex:index] objectForKey:@"TableName"];


    }else if(isOccupied == 100002) {



        label.textColor = [UIColor whiteColor];

        label.highlightedTextColor = [UIColor blackColor];

        label.backgroundColor = [UIColor colorWithRed:43.0f/255.0f green:150.0f/255.0f 
blue:0.0f/255.0f alpha:1.0f];

        //colorWithRed:215.0f/255.0f green:215.0f/255.0f blue:0.0f/255.0f alpha:1.0f];//GreenColor

        label.text  = [[self.filtredArray objectAtIndex:index] objectForKey:@"TableName"];

    }

    else if(isOccupied == 100003) {

        label.textColor = [UIColor blackColor];

        label.highlightedTextColor = [UIColor whiteColor];

        label.backgroundColor = [UIColor colorWithRed:215.0f/255.0f green:215.0f/255.0f blue:0.0f/255.0f alpha:1.0f];// Yellow Color


        //colorWithRed:229.0f/255.0f green:229.0f/255.0f blue:229.0f/255.0f alpha:1.0f];//GrayColor

        label.text  = [[self.filtredArray objectAtIndex:index] objectForKey:@"TableName"];

    }
    [cell.contentView addSubview:label];
    return cell;
}

- (void)GMGridView:(GMGridView *)gridView didTapOnItemAtIndex:(NSInteger)position
{

  NSLog(@"Did tap at index %d", position);

    [[SoundManager sharedSoundManager] playSound:SELECTED];

    //[self performSelector:@selector(registerTableToTheServer:) withObject:nil afterDelay:0.2];

    [self registerTableToTheServer:[[self filtredArray] objectAtIndex:position]];

    NSInteger tableId   =  [[[[self filtredArray] objectAtIndex:position] objectForKey:@"Table_id"] intValue];

    [self createPlistWithTableId:tableId];

    [_gmGridView reloadData];
}

And that to i'm reloading the gridview in viewWillAppear and viewDidLoad also. I didnt find anything useful. Please help me out guys.

1

There are 1 best solutions below

0
On BEST ANSWER
- (GMGridViewCell *)GMGridView:(GMGridView *)gridView cellForItemAtIndex:(NSInteger)index{
    
    CGSize size = [self GMGridView:gridView sizeForItemsInInterfaceOrientation:[[UIApplication sharedApplication] statusBarOrientation]];
    
    GMGridViewCell *cell = [gridView dequeueReusableCell];
    int isOccupied = [[[self.arrayOfoccupiedTables objectAtIndex:index] objectForKey:@"TStatus"] intValue];

    if (!cell)  {
        cell = [[[GMGridViewCell alloc] init] autorelease];
             
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
        cell.contentView = view;
    }

   //TRY TO RELOAD THE MG_GRIDVIEW HERE
}