ios - 有什么办法可以让工程中为数众多的UITableViewController共同执行某一个代理方法?
PHP中文网
PHP中文网 2017-04-17 17:29:02
0
3
300

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

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

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

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(3)
小葫芦

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

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

黄舟

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

大家讲道理

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿