由于需要,现在我希望能让工程中出现的所有TableView都执行某一个代理方法,比如说:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
但是由于controller数量巨大,又分散在工程里的很多文件夹中,如果可以的话我不太想一个个找出来单独添加...
请问有什么比较方便快捷的全局添加的方法?
高洛峰2017-04-17 17:31:02
더 좋은 방법은 모든 UITableViewController가 공통 상위 클래스를 상속하도록 한 다음 이 메서드를 상위 클래스에 작성하는 것입니다. 이 메서드가 하위 클래스에서도 사용되는 경우 먼저 super를 호출하세요.
또 다른 방법은 Method Swizzling을 살펴보는 것입니다. 이전 코드를 하나씩 변경하지 않고도 요구 사항을 완벽하게 해결할 수 있습니다. 하지만 이 검은 기술을 남용하지 않도록 주의하고, 가능하면 사용하지 마세요. 너무 많이 사용하면 혼란스러울 수 있기 때문입니다.