2012-10-17 9 views
6

enter image description hereenter image description here Mam dziwny problem, podczas korzystania z GMGridView. Właściwie używam GMGridview do wyświetlania tabel restauracji. Jeśli wybiorę Table1 (oznacza to pierwszą komórkę), powinien on zmienić się na redColor (co oznacza, że ​​jest to zajęta tabela). Zrobiłem to, ale mój problem polega na tym, że wybieram komórkę 1 (czerwony kolor), że czerwony kolor jest wyświetlany we wszystkich klasach, w których używałem GMGridview. Jest to całkowicie błędne, bez wyboru w innej klasie, jest wyświetlane jako wybrane.Wybór GMGridView jest nadrzędny

W poniższych zdjęć, jeśli wybrano 1, to pokazuje również wybrany 7 .....

A mój kod jest

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

i że jestem w przeładunku GridView viewWillAppear i viewDidLoad również. Nie znalazłem nic przydatnego. Proszę, pomóżcie mi chłopaki.

Odpowiedz

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 
} 
Powiązane problemy