成长笔记

【已解决】UISwitch 执行 setOn:animated:

2018-03-27  本文已影响89人  君赏

typora-copy-images-to: ipic

【已解决】UISwitch 执行 setOn:animated:没有任何的效果和动画

问题描述

解决办法

这个问题出现的原因是我的界面使用我封装的表格管理器

https://github.com/josercc/ZHTableViewGroup

导致的。

因为在点击 cell 时候我要返回点击 cell 的对应的对象和索引

我就走我当时创建 Cell 的方法用 UITableView 的dequeueReusableCellWithIdentifier方法获取。

这个方法返回的对象和界面显示的不是一个动画,在界面的对象还没有动画执行完毕,最新的已经替换,导致功能失效。

https://github.com/josercc/ZHTableViewGroup最新版本已经修复了这个问题。

我暂时的认为点击 cell 只能点击出现的 cell,我就从visibleCells这个数组获取,找到点击的 cell 之后直接返回。

就不会存在对象地址变更导致这个问题出现了。

__block UITableViewCell *cell = ({
    cell = nil;
    /* 因为点击的 CELL 一定是在屏幕可见的范围之内 所以直接取 */
    [dataSource.tableView.visibleCells enumerateObjectsUsingBlock:^(__kindof UITableViewCell * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSIndexPath *visibleIndexPath = [dataSource.tableView indexPathForCell:obj];
        if ([indexPath compare:visibleIndexPath] == NSOrderedSame) {
            cell = obj;
        }
    }];
    cell;
});
上一篇 下一篇

猜你喜欢

热点阅读