如何仅依赖于iOS版本的运行时系统覆盖方法?

如何仅依赖于iOS版本的运行时系统覆盖方法?,第1张

概述我已经通过使用实现了iOS 8的自动动态桌面单元格高度 self.tableView.rowHeight = UITableViewAutomaticDimension; 对于不支持自动动态单元格高度的iOS 8之前,我覆盖了heightForRowAtIndexPath方法. 这与我所做的类似:Using Auto Layout in UITableView for dynamic cell l 我已经通过使用实现了iOS 8的自动动态桌面单元格高度
self.tableVIEw.rowHeight = UItableVIEwautomaticDimension;

对于不支持自动动态单元格高度的iOS 8之前,我覆盖了heightForRowAtIndexPath方法.

这与我所做的类似:Using Auto Layout in UITableView for dynamic cell layouts & variable row heights

问题是如何编写使用iOS 8自动单元格高度的代码,但会覆盖早期iOS版本的heightForRowAtIndexPath.
只有iOS版本小于8,我想要我的自定义heightForRowAtIndexPath方法.
有什么建议如何做到这一点?

解决方法 一个解决方案是覆盖视图控制器中的respondToSelector:方法.在检查heightForRowAtIndexPath:方法时,在iOS 8下返回NO.
- (BOol)respondsToSelector:(SEL)selector {    static BOol useSelector;    static dispatch_once_t predicate = 0;    dispatch_once(&predicate,^{        useSelector = [[UIDevice currentDevice].systemVersion floatValue] < 8.0 ? YES : NO;    });    if (selector == @selector(tableVIEw:heightForRowAtIndexPath:)) {        return useSelector;    }    return [super respondsToSelector:selector];}

这样,当表视图进行如下调用时:

if ([self.delegate respondsToSelector:@selector(tableVIEw:heightForRowAtIndexPath:)]) {}

您的代码将在iOS 8或更高版本下返回NO,并在iOS 7或更早版本下返回YES.

总结

以上是内存溢出为你收集整理的如何仅依赖于iOS版本的运行时系统覆盖方法?全部内容,希望文章能够帮你解决如何仅依赖于iOS版本的运行时系统覆盖方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1110960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存