搜尋

首頁  >  問答  >  主體

ios - 有什么办法可以让工程中为数众多的UITableViewController共同执行某一个代理方法?

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

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

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

PHP中文网PHP中文网2826 天前308

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-17 17:31:02

    比較好的方法應該是讓你所有的 UITableViewController 繼承一個公用父類,然後在父類別裡寫這個方法。如果子類別裡也用到這個方法,先調 super。

    另外有一個方法就是看下Method Swizzling 它倒是可以完美解決你的需求,不需要一個個改之前的程式碼。但是注意這個黑科技一定不要濫用,能不用則不用,因為用多了很混亂。

    回覆
    0
  • 黄舟

    黄舟2017-04-17 17:31:02

    繼承一個 UITableViewController, 父類別寫代理程式方法

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:31:02

    先建一個父類別的UITableView,其他的都繼承自這個父類別

    回覆
    0
  • 取消回覆