Pregunta

Tengo una aplicación basada en navegación donde inserto UITableViewControllers en la pila. Me gustaría agregar un UImage de fondo a todos mis UITableViewControllers . No es un UIColor , sino un UImage . Sé cómo puedo hacer esto usando un archivo Nib y configurando el propio UITableView para usar [UIColor ClearColor] , pero no quiero revisar todos mis UITableViewControllers y cambiarlos para usar archivos Nib , etc.

También encontré esta solución , lo que sería genial si solo estuviera usando un único controlador tableview en mi aplicación. Creo que podría haber una manera de hacer que esto funcione, agregando una subvista "debajo". mi vista de tabla que se crea por defecto en un UITableViewController ?

Cualquier sugerencia sería genial.

¿Fue útil?

Solución

Es un poco diferente en una aplicación basada en navegación: simplemente cambie el fondo de la vista de navegación en la que se encuentra cada vista de tabla. Colocando el siguiente código en viewDidLoad de cada trabajo UITableViewController:

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

Pero es posible que solo necesite hacerlo una vez, en el nivel superior del controlador de navegación, en lugar de hacerlo en cada controlador de vista de tabla (aunque aún tendrá que configurar cada fondo para que se borre).

Otros consejos

En iOS6 use esto:

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

Si su clase es una subclase de UIViewController, puede hacerlo así:

[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];

Como dijo Gorm

  

solo necesita hacerlo una vez, en el nivel superior del UINavigationController

La respuesta dada a mi Madhup es la respuesta correcta. UITableViewController es una subclase de UIViewController, por lo que agregarlo al método viewDidLoad de su UITableViewController funciona muy bien.

A partir de iOS 3.2, existe [UITableView setBackgroundView:], que puede ser más fácil que algunas de las otras soluciones propuestas en el futuro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top