2011-04-20 16 views
5

¿Hay alguna forma de cambiar el color/imagen de fondo de los detalles UITableView en EKEventViewController? Puedo cambiar el UITableView principal pero no el detalle UITableView debido a que no tengo salida para la tabla. Por ejemplo, aquí está el código fuente de ejemplo de Apple para un Event AppCómo personalizar UITableView de EKEventViewController?

Respuesta

3

Esto es lo que puede utilizar,

UITableView *eventTableView = [[yourEventController.view subviews]objectAtIndex:0]; 

esto es eventTableView referencia a sus EKEventViewController 's tableView ahora se puede personalizar.

Gracias,

+0

funciona perfecto, gracias. – 0SX

+1

¿Puede ayudarme? ¿Cómo puedo hacer lo mismo con EKEventEditViewController –

+0

? No haga esto. Es probable que se bloquee algún día. Nunca escriba código que asuma una estructura de subvista específica. – rmaddy

5

Usted no sólo debe agarrar la subvista en el índice: 0. Esto puede funcionar en su código actual, pero puede romperse en futuras versiones de IOS, si Apple realiza cambios en la Vista.

Esto es más "a prueba del futuro"

for (UIView *searchTableView in [yourEventController.view subviews]) { 

    if ([eventTableView isKindOfClass:[UITableView class]]) { 
     @try { 
      // change stuff to eventTableView 

      for (UIView *eventTableViewCell in [eventTableView subviews]) { 

       if ([eventTableViewCell isKindOfClass:[UITableViewCell class]]) { 
        @try { 
         [(UITableViewCell *)eventTableViewCell setBackgroundColor:[UIColor clearColor]]; 
        } 
        @catch (NSException * e) { 
        } 
       } 
      } 


     } 
     @catch (NSException * e) { 
     } 
    } 
} 

Recuerde capturas de todo el y tratar! Si apple realiza cambios en EKEventViewController, el código probablemente aún funcione, y tampoco se bloqueará si los cambios rompen la compatibilidad con versiones anteriores. La respuesta de

0

Michael Gray no trabajó para mí en iOS7, para un EKEventEditViewController

quizá aplicación del EKEventEditViewController es diferente.

Este es el código que he usado:

for (UIViewController *controller in ekEventEditViewController.childViewControllers) { 
      if ([controller isKindOfClass:[UITableViewController class]]) { 
       NSLog(@"UITableViewController in EKEventViewController"); 
      } 
} 
+0

EKEventEditViewController es ligeramente diferente de EKEventViewController de modo que es un UINavigationController. Lo que puede hacer es configurar la propiedad de delegado de EKEventEditViewController en algún controlador (esta propiedad de delegado se hereda de UINavigationController en realidad) y usar el método de delegado willShowViewController para obtener el UITableView. Luego, desde allí, busca tu celda objetivo. El siguiente enlace proporciona algunos detalles: http://stackoverflow.com/questions/14813240/how-to-customise-ekeventeditviewcontroller – Steve

Cuestiones relacionadas