【问题标题】:How to customize UITableView of EKEventViewController?如何自定义 EKEventViewController 的 UITableView?
【发布时间】:2011-04-20 03:39:28
【问题描述】:

有什么方法可以改变 EKEventViewController 中细节 UITableView 的背景颜色/图像?由于没有表格的出口,我可以更改主 UITableView 但不能更改详细 UITableView。例如,这里是 Apple 的 Event App 示例源代码

【问题讨论】:

    标签: iphone cocoa-touch ios4 uikit eventkit


    【解决方案1】:

    您不应该只抓取 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 进行更改,那么代码可能仍然有效,并且如果更改破坏了向后兼容性,它也不会崩溃。

    【讨论】:

      【解决方案2】:

      这是你可以使用的,

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

      这个eventTableView 引用了你的EKEventViewController 的tableView 现在你可以自定义它了。

      谢谢,

      【讨论】:

      • 你能帮我如何为 EKEventEditViewController 做同样的事情
      • 不要这样做。它可能有一天会崩溃。永远不要编写假定特定子视图结构的代码。
      【解决方案3】:

      Michael Gray 的答案在 iOS7 上对我不起作用,对于 EKEventEditViewController

      也许 EKEventEditViewController 的实现不同。

      这是我使用的代码:

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

      【讨论】:

      • EKEventEditViewController 与 EKEventViewController 略有不同,因此它是一个 UINavigationController。您可以做的是将您的 EKEventEditViewController 的委托属性设置为某个控制器(此委托属性实际上是从 UINavigationController 继承的)并使用委托方法 willShowViewController 来获取 UITableView。然后从那里搜索您的目标单元格。以下链接提供了一些详细信息:stackoverflow.com/questions/14813240/…
      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2017-08-09
      • 1970-01-01
      相关资源
      最近更新 更多