2010-02-07 3 views
1

Les cellules searchResultsTableView ne peuvent pas être entièrement visibles lors du chargement avec une image d'arrière-plan. Les cellules semblent assez faibles et ne se distinguent pas de l'image de fond, même lorsqu'elles sont sélectionnées. Aucune suggestion?Pourquoi les cellules de tableview sont-elles à peine visibles lors de la définition de l'image d'arrière-plan de tableview?

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView { 

    for (UIView *view in controller.searchResultsTableView.subviews) { 
     //if ([view isKindOfClass:[UIImageView class]]) { 
      [view removeFromSuperview]; 
     //} 
    } 

    UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"]; 
    UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage]; 
    //backgroundImageView.opaque = NO; 
    backgroundImageView.alpha = 0.9; 

    controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    controller.searchResultsTableView.backgroundColor = [UIColor clearColor]; 
    [controller.searchResultsTableView addSubview:backgroundImageView]; 
    [controller.searchResultsTableView sendSubviewToBack:backgroundImageView]; 
    controller.searchResultsTableView.rowHeight = 25; 

    [patternImage release]; 
    [backgroundImageView release]; 
} 

Je ne fais rien d'autre que d'allouer une nouvelle UITableViewCell pour une utilisation (en searchResultsTableView) à l'intérieur de cette méthode déléguée:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { .... } 

Merci pour les corrections!

(je suis sur simulateur iPhone 3.1.2)

Répondre

0

Il me semble que vous définissez l'arrière-plan de votre tableview la dure. Je ne sais pas si elle est 100% le problème, mais vous devez définir votre arrière-plan UITableView comme ceci:

controller.searchResultsTableView.backgroundColor = [[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_newer.png"]]autorelease];

1

@Jessedc

Merci pour vos conseils. N'avez pas encore essayé votre code. J'ai résolu ce problème (avant que j'aie vu votre réponse) en définissant hidden = YES sur la tableview principale derrière searchResultsTableView chaque fois que searchResultsTableView charge, et hidden = NO lorsque la recherche est terminée. La tableview principale est définie avec backgroundColor = [UIColor clearColor] en haut d'une imageview (chargée avec la même image que dans mon code original searchResultsTableView là-haut).

Cette nouvelle disposition est comme précédemment souhaitée :-).

+0

Veuillez utiliser les commentaires pour répondre aux messages des autres utilisateurs :) – pchap10k

+0

@crunchyt - Il n'a pas la réputation de faire des commentaires? – willcodejavaforfood

+0

Je suis corrigé. StackOverflow est difficile! – pchap10k

1

Vous essayez d'afficher une image d'arrière-plan statique avec le texte de la table défilant par-dessus? Je pense que vous pourriez avoir votre code un peu mélangé (éventuellement).

La personnalisation d'une table est généralement effectuée dans une méthode viewWillAppear. donc ce code doit y aller:

UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"]; 
UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage]; 
//backgroundImageView.opaque = NO; 
backgroundImageView.alpha = 0.9; 

controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
controller.searchResultsTableView.backgroundColor = [UIColor clearColor]; 
[controller.searchResultsTableView addSubview:backgroundImageView]; 
[controller.searchResultsTableView sendSubviewToBack:backgroundImageView]; 
controller.searchResultsTableView.rowHeight = 25; 

[patternImage release]; 
[backgroundImageView release]; 

Ensuite, dans votre méthode déléguée de searchDisplayController: (peut-être pas nécessaire) willShowSearchResultsTableView vous ne parlez pas l'objet tableview passé, mais vous appelez à travers le niveau supérieur

Passez le code d'installation de votre table dans viewWillAppear. Faites-moi savoir si cela vous aide, ou si vous pouvez fournir plus d'informations/code.

Questions connexes