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

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

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

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

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(3)
小葫芦

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal