2012-10-17 7 views
6

enter image description hereenter image description here Ho un problema strano durante l'utilizzo di GMGridView. In realtà sto usando GMGridview per mostrare i tavoli del ristorante. Se ho selezionato Table1 (che significa prima cella), dovrebbe cambiare in redColor (che significa che è una tabella occupata). L'ho fatto, ma il mio problema è quando seleziono una cella 1 (redcolor), che redcolor sta mostrando in tutte le classi dove ho usato GMGridview. Questo è completamente sbagliato, senza alcuna selezione nell'altra classe, è mostrato come selezionato.La selezione GMGridView è prioritaria

Nelle immagini qui sotto, se ho selezionato 1, è mostrando 7 anche selezionato .....

E il mio codice è

- (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]; 
} 

E che sto ricaricando il GridView in viewWillAppear e viewDidLoad anche. Non ho trovato nulla di utile. Per favore aiutami ragazzi.

risposta

6
- (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 
}