2011-10-13 29 views
5

Aşağıdaki takvim takvimimi ekleme kodum. EKEventEditViewController için bir arka plan resmi göndermek istiyorum. Ben EKEventViewController ama onun EKEventEditViewController için çalışmıyor için arka plan görüntüsü ayarlamak başardı bu kodu kullanarak bu koduEKEventEditViewController için arka plan rengi/resmi ayarlama

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

bulundu. Herhangi bir yardım büyük beğeni topluyor. Şimdiden teşekkürler.

 EKEventEditViewController *editController = [[EKEventEditViewController alloc] init]; 
// UITableView *eventTableView = [[editController.view subviews]objectAtIndex:0]; 
// [eventTableView setHidden:YES]; 

// [eventTableView setBackgroundColor:[UIColor redColor]]; 
NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray: editController.viewControllers]; 
NSLog(@"%i", [allViewControllers count]); 
UITableView *eventTableView = [[[allViewControllers objectAtIndex:0] subviews] objectAtIndex:0]; 
// UITableView *eventTableView = [[editController.view subviews]objectAtIndex:0]; 
// eventTableView.backgroundColor = [UIColor redColor]; 
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"honeycomb.png"]]; 
eventTableView.backgroundColor = background; 
// [background release]; 
editController.event = [eventsList objectAtIndex:indexPath.row]; 
editController.eventStore = self.eventStore; 
editController.editViewDelegate = self; 
itsSelectedReminder = indexPath.row; 
isReminderDeleted = TRUE; 
[editController.navigationBar setTintColor:[UIColor colorWithRed:67/255.0 green:114/255.0 blue:18/255.0 alpha:1]]; 
[self presentModalViewController:editController animated:YES]; 

[editController release]; 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

cevap

12

Bu bir süreliğine beni deli etti, ama sonunda anladım.

hile nasılsa EKEventEditViewController içindeki tablo görünümüne erişmek için, ve bunu yapmak için sadece bir (belgelenen) yolu var gibi görünüyor:

Öncelikle sunulması görünüm denetleyicisi EKEventEditViewController set (veya ne olursa olsun bir UINavigationControllerDelegate gibi) özelleştirme için sorumlu olmak istiyorum:

EKEventEditViewController *eventEditViewController = [[EKEventEditViewController alloc] init]; 
eventEditViewController.delegate = yourViewController; // Probably self 
0:

@interface YourViewController : UIViewController <UINavigationControllerDelegate> 

Second, EKEventEditViewController 'in temsilci olmak için görünüm denetleyicisi ayarlamak

Üçüncüsü, temsilci aşağıdaki yöntemi uygulamak:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    if ([viewController isKindOfClass:[UITableViewController class]]) { 
     ((UITableViewController *)viewController).tableView.backgroundColor = [UIColor blueColor]; 
     ((UITableViewController *)viewController).tableView.backgroundView = nil; 
    } 
} 

maviye EKEventEditViewController 'ın tablo görünümü arka plan, ama şimdi asıl gezinme denetleyici ve içeride Tablo görünümünde erişimi olduğundan değişecek Bu örnek istediğini yapabilirsin!

Not: Bu kodu henüz Apple'a göndermedim, ancak belgesiz bir şey kullanmıyorum, bu yüzden bir soruna neden olacağını göremiyorum.

+0

Çok teşekkür ederim .. Bunu deneyeceğim ve bilmenizi sağlıyorum .. –

+1

Çok teşekkürler, harika çalışıyor .. Başlığı/Konumu hala tıklarsam, eski varsayılan ekranı görüyorum. Bu arka planı değiştirmeme yardım edebilir misin? –

İlgili konular