iOS开发小技巧iOS开发异常问题

iOS11 UITableView侧滑适配遇到的坑

2017-11-09  本文已影响19人  00822452baa5
123123.gif
遇到的bug如上图,经测试只在iOS11上才有这样的问题,排除了干扰因素,最终把bug的原因确定了。
7AB4B5B7E8CCC9DE21821FB9AFADC6D3.jpg
上面的代码是运用Method Swizzling替换系统默认方法来防止字典赋值为空时崩溃,注释了之后tableView侧滑的bug就好了。至于为什么iOS11才会出现个人猜想是因为苹果在iOS11上重新实现了UITableView的侧滑效果,提供了新的方法。新的方法提供了:左侧按钮自定义、右侧按钮自定义、自定义图片、背景颜色。
// Swipe actions
// These methods supersede  -editActionsForRowAtIndexPath: if implemented
// return nil to get the default swipe actions
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);

正好新方法的实现用到了NSMutableDictionary而且需要传入空值,被我们自己写的方法拦截了才导致的。看来runtime大法还是得谨慎使用哇!!!

上一篇下一篇

猜你喜欢

热点阅读