【发布时间】:2011-04-20 03:39:28
【问题描述】:
有什么方法可以改变 EKEventViewController 中细节 UITableView 的背景颜色/图像?由于没有表格的出口,我可以更改主 UITableView 但不能更改详细 UITableView。例如,这里是 Apple 的 Event App 示例源代码
【问题讨论】:
标签: iphone cocoa-touch ios4 uikit eventkit
有什么方法可以改变 EKEventViewController 中细节 UITableView 的背景颜色/图像?由于没有表格的出口,我可以更改主 UITableView 但不能更改详细 UITableView。例如,这里是 Apple 的 Event App 示例源代码
【问题讨论】:
标签: iphone cocoa-touch ios4 uikit eventkit
您不应该只抓取 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) {
}
}
}
记住所有的尝试和捕获!如果苹果对 EKEventViewController 进行更改,那么代码可能仍然有效,并且如果更改破坏了向后兼容性,它也不会崩溃。
【讨论】:
这是你可以使用的,
UITableView *eventTableView = [[yourEventController.view subviews]objectAtIndex:0];
这个eventTableView 引用了你的EKEventViewController 的tableView 现在你可以自定义它了。
谢谢,
【讨论】:
Michael Gray 的答案在 iOS7 上对我不起作用,对于 EKEventEditViewController
也许 EKEventEditViewController 的实现不同。
这是我使用的代码:
for (UIViewController *controller in ekEventEditViewController.childViewControllers) {
if ([controller isKindOfClass:[UITableViewController class]]) {
NSLog(@"UITableViewController in EKEventViewController");
}
}
【讨论】: