2011-10-13 23 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内部テーブルビューへのアクセスを取得することであり、それを行うための唯一の1(文書化)の方法があるように思われる:

まず、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

ありがとうございますそれは素晴らしいです..私はタイトル/場所をクリックしても私は古いデフォルトの画面が表示されます。あなたはその背景を変えるのを手伝ってもらえますか? –

関連する問題