5

以下は、カレンダー イベントを追加するための私のコードです。EKEventEditViewController の背景画像を送信したい。このコードを見つけました

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

このコードを使用して、EKEventViewController の背景画像を設定できましたが、EKEventEditViewController では機能しません。どんな助けでも大歓迎です。前もって感謝します。

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

1 に答える 1

12

これはしばらくの間私を夢中にさせましたが、ついにそれを理解しました.

秘訣は、どうにかして EKEventEditViewController 内のテーブル ビューにアクセスすることです。それを行う (文書化された) 方法は 1 つだけのようです。

EKEventEditViewControllerまず、 (またはカスタマイズを担当したいもの)を提示するView Controllerを次のように設定しますUINavigationControllerDelegate

@interface YourViewController : UIViewController <UINavigationControllerDelegate>

次に、View Controller をEKEventEditViewControllerのデリゲートに設定します。

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

3 番目に、デリゲートに次のメソッドを実装します。

- (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 に提出していませんが、文書化されていないものは使用していないため、何が問題を引き起こすのかわかりません。

楽しみ!

于 2012-01-01T09:34:50.330 に答える