2011-04-20 8 views
5

Czy jest jakiś sposób zmienić kolor tła/obraz szczegółów UITableView w EKEventViewController? Jestem w stanie zmienić główny UITableView, ale nie szczegóły UITableView, ponieważ nie ma gniazdka dla tabeli. Na przykład, oto przykładowy kod źródłowy Apple na Event AppJak dostosować UITableView z EKEventViewController?

Odpowiedz

3

Oto, co można wykorzystać,

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

eventTableView jest to odniesienie do tej pory można go dostosować twoje EKEventViewController „s Tableview.

Dzięki,

+0

Działa idealnie, dzięki. – 0SX

+1

Czy możesz mi pomóc, jak mogę zrobić to samo dla EKEventEditViewController –

+0

Nie rób tego. Prawdopodobnie pewnego dnia się rozbije. Nigdy nie pisz kodu, który zakłada określoną strukturę podglądu. – rmaddy

5

Nie należy po prostu chwycić podrzędny w indeksie: 0. Może to działać w twoim bieżącym kodzie, ale może się zepsuć w przyszłych wersjach IOS, jeśli Apple wprowadzi zmiany w widoku.

Jest to bardziej „przyszłościowe”

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) { 
     } 
    } 
} 

Pamiętaj połowy wszystkich i spróbować! Jeśli jabłko wprowadzi zmiany do EKEventViewController, prawdopodobnie kod nadal będzie działał, a także nie ulegnie awarii, jeśli zmiany złamią kompatybilność wsteczną. Odpowiedź

0

Michaela Graya nie pracował dla mnie na iOS7, na EKEventEditViewController

może wdrażania EKEventEditViewController jest inna.

oto kod Użyłem:

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

EKEventEditViewController różni się nieco od EKEventViewController w taki sposób, że jest to UINavigationController. To, co możesz zrobić, to ustawić właściwość delegata EKEventEditViewController na jakimś kontrolerze (ta właściwość delegata jest dziedziczona z faktycznie UINavigationController) i użyć metody delegate willShowViewController, aby uzyskać UITableView. Następnie stamtąd wyszukaj swoją celowaną komórkę. Poniższy link zawiera kilka szczegółów: http://stackoverflow.com/questions/14813240/how-to-customise-ekeventeditviewcontroller – Steve