Question

J'ai une application de navigation dans laquelle je pousse UITableViewControllers dans la pile. J'aimerais ajouter un UImage en arrière-plan à tous mes UITableViewControllers . Pas un UIColor , mais un UImage . Je sais comment faire cela en utilisant un fichier Nib et en configurant le UITableView pour qu'il utilise [UIColor ClearColor] , mais je ne le fais pas. veux parcourir tous mes UITableViewControllers et les changer pour utiliser des fichiers Nib , etc.

J'ai aussi trouvé cette solution , ce qui serait formidable si j'utilisais simplement un seul contrôleur de visualisation de table dans mon application. Je pense qu'il pourrait y avoir un moyen de faire en sorte que cela fonctionne en ajoutant une sous-vue "ci-dessous". ma vue de table créée par défaut dans un UITableViewController ?

Toutes les suggestions seraient formidables.

Était-ce utile?

La solution

C’est un peu différent dans une application basée sur la navigation: il suffit de changer l’arrière-plan de la vue de navigation sur lequel se trouve chaque vue de tableau. Placer le code suivant dans viewDidLoad de chaque UITableViewController fonctionne:

self.navigationController.view.backgroundColor = 
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];

Mais vous n’auriez peut-être besoin que de le faire une fois, au niveau supérieur du contrôleur de navigation, plutôt que dans chaque contrôleur tableview (bien que vous deviez toujours régler chaque arrière-plan pour qu’il soit effacé).

Autres conseils

Sur iOS6, utilisez ceci:

UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];

Si votre classe est une sous-classe UIViewController, vous pouvez le faire comme suit:

[self.view setBackgroundColor:
     [UIColor colorWithPatternImage:
      [UIImage imageWithContentsOfFile:
       [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
        @"background.png"]]]];
UIImageView *backgroundView = 
  [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0, 
                                  0, 
                               self.navigationController.view.frame.size.width, 
                               self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
                                  UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];

Comme l'a dit Gorm

  

n'a besoin que de le faire une fois, au niveau supérieur du UINavigationController

La réponse donnée à mon Madhup est la bonne réponse. UITableViewController est une sous-classe de UIViewController, vous pouvez donc ajouter que la méthode viewDidLoad de votre UITableViewController fonctionne parfaitement.

À partir d'iOS 3.2, - [UITableView setBackgroundView:] existe, ce qui est peut-être plus simple que certaines des autres solutions proposées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top