由于需要,现在我希望能让工程中出现的所有TableView都执行某一个代理方法,比如说:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
但是由于controller数量巨大,又分散在工程里的很多文件夹中,如果可以的话我不太想一个个找出来单独添加...
请问有什么比较方便快捷的全局添加的方法?
Une meilleure façon serait de laisser tous vos UITableViewControllers hériter d'une classe parent commune, puis d'écrire cette méthode dans la classe parent. Si cette méthode est également utilisée dans les sous-classes, appelez d’abord super.
Une autre façon est de jeter un œil à Method Swizzling. Elle peut parfaitement résoudre vos besoins sans modifier le code précédent un par un. Mais attention à ne pas abuser de cette technologie noire, et ne l’utilisez pas si vous le pouvez, car elle prêterait à confusion si elle était trop utilisée.
Héritez un UITableViewController et écrivez des méthodes proxy dans la classe parent
Créez d'abord un UITableView de la classe parent, et tout le reste hérite de cette classe parent