2011-10-13 5 views
5

다음은 캘린더 이벤트를 추가하기위한 코드입니다. EKEventEditViewController에 대한 배경 이미지를 보내려고합니다. 나는 EKEventViewController하지만 EKEventEditViewController 작동하지에 대한 배경 이미지를 설정 할 수 있었다이 코드를 사용하여이 코드EKEventEditViewController의 배경색/이미지 설정

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

을 발견했다. 어떤 도움이라도 대단히 감사합니다. 미리 감사드립니다.

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

답변

12

이 사람은 나를 잠시 몰아 치웠다. 그러나 나는 마침내 그것을 알아 냈다.

트릭은 어떻게 든 EKEventEditViewController 내부 테이블 뷰에 대한 액세스 권한을 얻을 수 있습니다, 그 작업을 수행하는 하나의 (문서화) 방법이있을 것 같다

첫째, 제시 뷰 컨트롤러 EKEventEditViewController를 설정 (또는 무엇이든 당신이 UINavigationControllerDelegate 등) 사용자 정의에 대한 책임하려면 :

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

@interface YourViewController : UIViewController <UINavigationControllerDelegate> 

둘째, EKEventEditViewController의 대표로보기 컨트롤러를 설정

셋째, 대리인에 다음 메소드를 구현 :

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

파란색으로 EKEventEditViewController의 테이블 뷰 배경,하지만 지금은 당신이 실제 탐색 컨트롤러 내부 테이블 뷰에 대한 액세스 권한이 변경됩니다이 예 당신이 원하는대로 할 수 있습니다!

참고 : 아직이 코드를 Apple에 제출하지 않았지만 문서화되지 않은 내용을 사용하고 있지 않으므로 문제가되는 원인을 알 수 없습니다.

즐기십시오!

+0

대단히 감사합니다. 나는 그것을 시도하고 알려 드리겠습니다. –

+1

고마워 많이 잘되고 .. 어떻게 여전히 제목/위치를 클릭하면 이전 기본 화면이 나타납니다. 그 배경을 바꾸도록 도와 주시겠습니까 .. –