2012-03-19 23 views
5

Estoy tratando de establecer el fondo para una cantidad de UITableViews que se cargan dentro de un UINavigationController. Estoy usando el proxy de apariencia agregado en iOS 5 pero no funciona como lo espero.UITableView apariencia con ios5 UIAppearance no funciona correctamente?

La aplicación utiliza un UISplitViewController, siendo la vista maestra el UINavigationController. Dentro de esto, tengo una subclase UITableViewController llamada PBMasterTableViewController. En mi AppDelegate Tengo el siguiente:

UIImageView *bgView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menuBg.png"]] autorelease]; 
    [[UITableView appearanceWhenContainedIn:[PBMasterTableViewController_Ipad class], nil] setBackgroundView:bgView]; 

Esto está trabajando muy bien, y mi menú principal en la vista dividida tiene el fondo que yo quiero.

Desde este menú principal, I 3 otras subclases de UITableViewController que se insertan en el controlador de navegación cuando selecciono las filas relevantes. No obstante, no puedo cambiar el contexto de estas tablas con el proxy de apariencia. Estoy intentando lo siguiente:

UIImageView *bgView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menuBg.png"]] autorelease]; 
    [[UITableView appearanceWhenContainedIn:[PBTwitterTableViewController class], nil] setBackgroundView:bgView]; 

Esto también está en la AppDelegate justo debajo del código previamente demostrado que funciona (y sin la repetición de la imagen creación de la vista sin embargo), pero esto simplemente no hace nada! Cuando presiono una instancia del PBTwitterTableViewController en el controlador de navegación, simplemente obtengo una vista de tabla estándar sin cambio de fondo.

sé que yo podría simplemente cambiar las vistas de fondo en los propios tableViewControllers, sin embargo no quiero que estos fondos estén allí cuando se muestra el menú en el popover splitViewControllers cuando se gira a portait, por lo tanto, estoy tratando de utilizar appearanceWhenContainedIn:

Tampoco quiero simplemente configurar el aspecto cuando está contenido en UISplitViewController, ya que en 2 instancias tengo una UITableView cargada en la sección de detalles, por lo que esto cambiaría la apariencia de las que No quiero.

¿Hay otra forma de hacerlo sin el proxy de aparición que todavía me permitirá cambiar el fondo para cuando está en el popover, o hay una manera de hacer que esto funcione con el proxy, o simplemente me falta ¿algo estúpido?

Gracias

EDIT:

He intentado crear una subclase de la UINavigationController y intentado usar [[UITableView appearanceWhenContainedIn:[PBMenuNavigationController class], nil] setBackgroundView:bgView]; que está de nuevo trabajando bien para el menú principal, pero no para cualquier otro UITableView insertan en la pila , así que estoy muy perplejo ahora :(

Respuesta

1

OK lo ordenó. Simplemente hacerlo dentro de cada vista y comprobar que el controlador principal no es algo que no quiero. Gracias de todos modos

Cuestiones relacionadas