gpt4 book ai didi

iphone - 返回 View 时 iOS UISlider 旋钮重影

转载 作者:行者123 更新时间:2023-11-29 04:56:02 25 4
gpt4 key购买 nike

在 tableviewcell 中我有一个 UISlider。如果我移动 slider 旋钮,返回到之前的 View ,然后返回到表格 View , slider 上的旋钮将返回到零,但我会看到我之前移动 slider 的旋钮出现“重影” 。

我清除了 cellForRowAtIndexPath: 中 slider 对象的上下文 View ,并在 viewDidAppear 中重新加载表格。

有人知道如何解决这个问题吗?这很烦人。如果有帮助的话,我将 slider 代码放在下面。

        // Setup slider
CGRect sliderFrame = CGRectMake(15, 56, 230, 0);
UISlider *slider = [[UISlider alloc] initWithFrame:sliderFrame];
slider.clearsContextBeforeDrawing = YES;
[slider addTarget:self action:@selector(sliderUpdated:) forControlEvents:UIControlEventValueChanged];
[slider addTarget:self action:@selector(sliderStopped:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:slider];
[slider release];

我很感激!谢谢!

最佳答案

您很可能正在旧的 UISlider 上创建一个新的 UISlider,从而产生重影效果。

两种可能的解决方案

  1. UISlider 添加到单元格时对其进行标记。

  2. 子类 UITableViewCell 并将 UISlider 添加到其内容 View ,并使用 ivar 保留对其的引用。

要执行的操作 1,只需在将 UISlider 添加到 contentView 时对其进行标记即可。然后,当您再次获得单元格时,您首先尝试恢复 View ,或者创建一个新的 View 。

const int sliderViewTag = 99;

UISlider *slider = [cell.contentView viewWithTag:sliderViewTag];

if (!slider) {
CGRect sliderFrame = CGRectMake(15, 56, 230, 0);
slider = [[UISlider alloc] initWithFrame:sliderFrame];
slider.clearsContextBeforeDrawing = YES;
[slider addTarget:self action:@selector(sliderUpdated:) forControlEvents:UIControlEventValueChanged];
[slider addTarget:self action:@selector(sliderStopped:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:slider];
[slider release]; slider = nil;
}

尽管 2 涉及更多一些,但它是我的首选方法,但我确信有一些很好的示例说明如何做到这一点。 Apple 有一些很棒的文档,请查看它们 Table View Programming Guide具体请参阅仔细查看 TableView 单元格

部分

关于iphone - 返回 View 时 iOS UISlider 旋钮重影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com