2011-10-13 70 views
5

Sau đây là mã của tôi để thêm sự kiện lịch. Tôi muốn gửi một hình nền cho EKEventEditViewController. Tôi đã tìm thấy mã nàyĐặt màu nền/hình ảnh cho EKEventEditViewController

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

Sử dụng mã này Tôi có thể đặt hình nền cho EKEventViewController nhưng không hoạt động cho EKEventEditViewController. Bất kỳ trợ giúp nào cũng được đánh giá rất cao. Cảm ơn trước.

 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]; 

Trả lời

12

Điều này khiến tôi mất nhiều thời gian, nhưng cuối cùng tôi đã tìm ra.

Bí quyết là bằng cách nào đó có thể truy cập để xem bảng bên trong EKEventEditViewController, và có vẻ là chỉ có một (tài liệu) cách để làm điều đó:

Đầu tiên, thiết lập bộ điều khiển xem trình bày EKEventEditViewController (hoặc bất kỳ bạn muốn được chịu trách nhiệm về tùy biến) như là một UINavigationControllerDelegate:

@interface YourViewController : UIViewController <UINavigationControllerDelegate> 

thứ hai, thiết lập bộ điều khiển xem bạn là 's EKEventEditViewController đại biểu:

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

Thứ ba, thực hiện các phương pháp sau đây trong các đại biểu:

- (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; 
    } 
} 

Ví dụ này sẽ thay đổi quan điểm bảng nền 's EKEventEditViewController sang màu xanh, nhưng bây giờ mà bạn có thể sử dụng bộ điều khiển chuyển hướng thực tế và xem bảng bên bạn có thể làm bất cứ điều gì bạn muốn!

Lưu ý: Tôi chưa gửi mã này cho Apple, nhưng tôi không sử dụng bất kỳ thứ gì không có giấy tờ, vì vậy tôi không thấy điều gì gây ra vấn đề.

Tận hưởng!

+0

Cảm ơn bạn rất nhiều .. Tôi sẽ thử nó và cho bạn biết .. –

+1

Cảm ơn rất nhiều nó đang làm việc tuyệt vời .. Làm thế nào bao giờ nếu tôi nhấp vào Tiêu đề/Vị trí bên trong vẫn còn tôi thấy màn hình mặc định cũ. Bạn có thể giúp tôi thay đổi nền tảng đó không .. –