2011-04-20 24 views
5

EKEventViewController'daki UITableView ayrıntılarının arka plan rengini/görüntüsünü değiştirmenin bir yolu var mı? Ana UITableView'ı değiştirebiliyorum ancak tablo için çıkışa sahip olmadığından UITableView detayını değiştiremiyorum. Örneğin, aşağıdaEKEventViewController UITableView nasıl özelleştirilir?

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

bu eventTableView sizin EKEventViewController 'ın tableView şimdi bunu özelleştirebilirsiniz için referanstır, İşte kullanabileceğiniz şeydir bir Event App

cevap

3

Apple'ın örnek kaynak kodudur. Sadece endeksinde subview kapmak olmamalıdır

+0

mükemmel çalışır, teşekkürler: Burada

i kullandım koddur. – 0SX

+1

EKEventEditViewController –

+0

için bunu nasıl yapabileceğimi bana yardımcı olabilir misiniz? Birgün çökecek. Belirli bir alt görünüm yapısını varsayan kod yazmayın. – rmaddy

5

sayesinde: 0. Bu, mevcut kodunuzda çalışabilir, ancak Apple, Görünüm’e değişiklikler yaparsa, gelecekteki IOS sürümlerinde kesintiye neden olabilir.

Bu, "gelecek kanıtı"

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

tümünü deneyin en ve yakalar hatırla olduğunu! Apple, EKEventViewController'da koddan daha fazla değişiklik yaparsa, muhtemelen yine de çalışmaya devam eder ve değişiklikler geriye dönük uyumluluğu bozarsa, kilitlenmez.

0

Michael Gray'in cevabı belki EKEventEditViewController en uygulaması farklı olan bir EKEventEditViewController

için, -iOS7 benim için çalıştı etmez.

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

EKEventEditViewController, EKEventViewController'dan biraz farklıdır, öyle ki bir UINavigationController. Yapabildiğiniz şey, EKEventEditViewController's delegate özelliğinizin bazı denetleyicilere ayarlanmasıdır (Bu delege özelliği, gerçekte UINavigationController öğesinden devralınır) ve UITableView öğesini almak için temsilci yöntemi olan willShowViewController öğesini kullanır. Sonra oradan hedeflenen hücrenizi arayın. Aşağıdaki bağlantı bazı ayrıntılar verir: http://stackoverflow.com/questions/14813240/how-to-customise-ekeventeditviewcontroller – Steve