- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个UITableView,它正在播放来自Internet的音频剪辑。正在使用单例助手播放音频剪辑。当用户点击单元格中的按钮时,音频剪辑开始,并且进度指示器显示已播放了多少音频剪辑,这是可行的。通过这个单例,我传入了一个更新进度块,该块在播放单元时对其进行更新。
但是,当我滚动浏览剪辑列表时,进度指示器将继续为其他UITableViewCells进行进度。我的猜测是当我在dequeueReusableCellWithIdentifier
中调用cellForRowAtIndexPath
时,它正在返回当前正在由音频播放单例更新的单元格。我该如何解决这个问题?
编辑:这里的主要问题是我在播放playButtonPressed
中的声音后传递了进度块。我每0.5秒更新一次进度。换句话说,如果我在cellForRow中将进度设置为0或类似的东西,它将在0.5秒后设置回当前进度。
[[Singleton sharedInstance] playURL:url completionHandler:^{
cell.playButton.selected = NO;
} errorHandler:^{
cell.playButton.selected = NO;
} progressHandler:^(float progress) {
if (cell.playButton.selected) {
[cell.progressView setProgress:progress animated:YES];
}
}];
最佳答案
假设您正在使用自定义的UITableViewCell
子类,可能最好的处理方法是在单元格类中覆盖prepareForReuse
。在这里,您可以隐藏进度指示器,将其完全删除,将其重置为零,或者在您的应用中最有意义的设置:
override func prepareForReuse() {
super.prepareForReuse()
progressView.progress = 0 // Or otherwise reset the progress view
}
prepareForReuse
刚好在将单元格从重用队列中取出以再次使用之前被调用。您可以使用它来使您的单元格返回到一种状态,在该状态下,可能已为特定索引路径完成了所有设置。
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MyCell
if indexPath.row == audioPlayer.indexOfTrackBeingPlayed {
cell.progressView.progress = audioPlayer.currentProgress
} else {
cell.progressView.progress = 0
}
}
indexPath
从块内部获取单元格,因此它始终会获取正确的单元格。例如:
[[Singleton sharedInstance] playURL:url completionHandler:^{
MyCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
cell.playButton.selected = NO;
} errorHandler:^{
MyCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
cell.playButton.selected = NO;
} progressHandler:^(float progress) {
MyCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
if (cell.playButton.selected) {
[cell.progressView setProgress:progress animated:YES];
}
}];
@property(nonatomic, readonly) MyCell *playingCell;
- (MyCell *)playingCell {
NSIndexPath *playingIndexPath = // get the index path of the playing item
return [self.tableView cellForRowAtIndexPath:playingIndexPath];
}
cell
替换块中的
self.playingCell
即可。
关于ios - 如何防止更新UITableView中的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32016323/
我已经尝试在我的 CSS 中添加一个元素来删除每三个 div 的 margin-right。不过,似乎只是出于某种原因影响了第 3 次和第 7 次。需要它在第 3、6、9 等日工作... CSS .s
如何使 div/input 闪烁或“脉冲”?例如,假设表单字段输入了无效值? 最佳答案 使用 CSS3 类似 on this page ,您可以将脉冲效果添加到名为 error 的类中: @-webk
我目前正在尝试构建一个简单的 wireframe来自 lattice 的情节包,但由沿 y 轴的数百个点组成。这导致绘图被线框网格淹没,您看到的只是一个黑色块。我知道我可以用 col=FALSE 完全
在知道 parent>div CSS 选择器在 IE 中无法识别后,我重新编码我的 CSS 样式,例如: div#bodyMain div#paneLeft>div{/*styles here*/}
我有两个 div,一个在另一个里面。当我将鼠标悬停 到最外面的那个时,我想改变它的颜色,没问题。但是,当我将鼠标悬停 到内部时,我只想更改它的颜色。这可能吗?换句话说,当 将鼠标悬停到内部 div 上
我需要展示这样的东西 有人可以帮忙吗?我可以实现以下输出 我正在使用以下代码:: GridView.builder( scrollDirection: Axis.vertical,
当 Bottom Sheet 像 Android 键盘一样打开时,是否有任何方法可以手动上推布局( ScrollView 或回收器 View 或整个 Activity )?或者你可以说我想以 Bott
我有以下代码,用于使用纯 HTML 和 CSS 显示翻转。当您将鼠标悬停在文本上时,它会更改左右图像。 在我测试的所有浏览器中都运行良好,Safari 4 除外。据我收集的信息,Safari 4 支持
我构建了某种 CMS,但在使用 TinyMCE 和 Bootstrap 时遇到了一些问题。 我有一个页面,其中概述了一个 div,如果用户单击该 div,他们可以从模态中选择图像。该图像被插入到一个
出于某种原因,当我设置一个过渡时,当我的鼠标悬停在一个元素上时,背景会改变颜色,它只适用于一个元素,但它们都共享同一个类?任何帮助我的 CSS .outer_ad { position:rel
好吧,这真的很愚蠢。我不知道 Android Studio 中的调试监视框架发生了什么。我有 1.5.1 的工作室。 是否有一些来自 intellij 的 secret 知识来展示它。 最佳答案 与以
我有这个标记: some code > 我正在尝试获取此布局: 注意:上一个和下一个按钮靠近#player 我正在尝试这样: .nextBtn{
网站:http://avuedesigns.com/index 首页有 6 个菜单项。我希望每件元素在您经过时都有自己的颜色。 这是当您将鼠标悬停在 div 上时将所有内容更改为白色的行 li#hom
我需要在 index.php 文件中显示它,但没有任何效果。我所有的文章都没有正确定位。我将其用作代码: 最佳答案 您可以首先检查您
我是一名优秀的程序员,十分优秀!