찾다

 >  Q&A  >  본문

ios - 有什么办法可以让工程中为数众多的UITableViewController共同执行某一个代理方法?

由于需要,现在我希望能让工程中出现的所有TableView都执行某一个代理方法,比如说:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
        [cell setLayoutMargins:UIEdgeInsetsZero];
}

但是由于controller数量巨大,又分散在工程里的很多文件夹中,如果可以的话我不太想一个个找出来单独添加...
请问有什么比较方便快捷的全局添加的方法?

PHP中文网PHP中文网2826일 전304

모든 응답(3)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 17:31:02

    더 좋은 방법은 모든 UITableViewController가 공통 상위 클래스를 상속하도록 한 다음 이 메서드를 상위 클래스에 작성하는 것입니다. 이 메서드가 하위 클래스에서도 사용되는 경우 먼저 super를 호출하세요.

    또 다른 방법은 Method Swizzling을 살펴보는 것입니다. 이전 코드를 하나씩 변경하지 않고도 요구 사항을 완벽하게 해결할 수 있습니다. 하지만 이 검은 기술을 남용하지 않도록 주의하고, 가능하면 사용하지 마세요. 너무 많이 사용하면 혼란스러울 수 있기 때문입니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 17:31:02

    UITableViewController를 상속하고 상위 클래스에 프록시 메서드를 작성합니다

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:31:02

    먼저 상위 클래스의 UITableView를 생성하고 다른 모든 항목은 이 상위 클래스에서 상속됩니다.

    회신하다
    0
  • 취소회신하다