如何自定义EKEventViewController的UITableView?

时间:2011-04-20 03:39:28

标签: iphone cocoa-touch ios4 uikit eventkit

有没有办法在EKEventViewController中更改细节UITableView的背景颜色/图像?我能够更改主UITableView而不是细节UITableView,因为没有表的出口。例如,这是Apple的Event App

示例源代码

3 个答案:

答案 0 :(得分:5)

你不应该只是在index:0处抓取子视图。这可能适用于您当前的代码,但如果Apple对View进行更改,则可能会在未来的IOS版本中出现问题。

这更像是“面向未来”

for (UIView *searchTableView in [yourEventController.view subviews]) {

    if ([eventTableView isKindOfClass:[UITableView class]]) {
        @try {
            // change stuff to eventTableView

            for (UIView *eventTableViewCell in [eventTableView subviews]) {

                if ([eventTableViewCell isKindOfClass:[UITableViewCell class]]) {
                    @try {
                        [(UITableViewCell *)eventTableViewCell setBackgroundColor:[UIColor clearColor]];
                    }
                    @catch (NSException * e) {
                    }
                }
            }


        }
        @catch (NSException * e) {
        }
    }
} 

记住所有的尝试和捕获!如果Apple对EKEventViewController进行了更改,那么代码可能仍然有效,并且如果更改破坏了向后兼容性,它也不会崩溃。

答案 1 :(得分:3)

以下是您可以使用的内容,

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

eventTableView引用了您的EKEventViewController的tableView,现在您可以对其进行自定义。

谢谢,

答案 2 :(得分:0)

对于EKEventEditViewController来说,Michael Gray的答案对我来说不起作用

也许EKEventEditViewController的实现是不同的。

这是我用过的代码:

for (UIViewController *controller in ekEventEditViewController.childViewControllers) {
            if ([controller isKindOfClass:[UITableViewController class]]) {
                 NSLog(@"UITableViewController in EKEventViewController");
            }
}