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