【问题标题】:Set background color/image for EKEventEditViewController为 EKEventEditViewController 设置背景颜色/图像
【发布时间】:2011-10-13 13:12:47
【问题描述】:

以下是我添加日历事件的代码。我想为 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]; 

【问题讨论】:

    标签: iphone calendar ekeventkit


    【解决方案1】:

    这个让我发疯了一段时间,但我终于弄明白了。

    诀窍是通过某种方式访问​​ EKEventEditViewController 中的表格视图,并且似乎只有一种(记录在案的)方法可以做到这一点:

    首先,将呈现EKEventEditViewController(或您希望负责自定义的任何内容)的视图控制器设置为UINavigationControllerDelegate

    @interface YourViewController : UIViewController <UINavigationControllerDelegate>
    

    其次,将您的视图控制器设置为EKEventEditViewController 的委托:

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

    三、在delegate中实现如下方法:

    - (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,但我没有使用任何未记录的内容,因此我看不出会导致什么问题。

    享受吧!

    【讨论】:

    • 非常感谢,它工作得很好。但是,如果我点击里面的标题/位置,我仍然会看到旧的默认屏幕。你能帮我改变那个背景吗..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2017-09-11
    • 2023-03-25
    • 2011-11-07
    • 2012-06-04
    相关资源
    最近更新 更多