- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不确定如何表达,但我正在创建一个音乐应用程序,并且我有一个流派选项卡按钮,该按钮将流派列为 UICollectionView
中的单元格。
然后用户选择一个流派,比如“Hip-Hop”,然后会显示相应的艺术家,例如“Jay-Z、Kanye West、Kendrick Lamar...”等。如果用户选择“Jay-Z 和 Kanye West”,则会显示他们的艺术家的专辑,其中应用了流派谓词。
在这种情况下,它是一张专辑“Watch the Throne”和该专辑中的一首歌曲。但是现在,如果我回到我的流派收藏 View 并选择“嘻哈/说唱”并选择“Jay-Z 和 Kanye West”(这张专辑中的一些歌曲显示在这种流派下,一首显示在另一种流派下)然后查看专辑(又只有 1 张 - “Watch the throne”),它只显示一首轨道而不是 15 首。
这是双向的。如果我首先通过“Hip Hop/Rap”类型选择专辑,则专辑将显示两种类型的 15 首轨道,如果我选择“Hip-Hop”类型,则专辑将显示两种类型的一首歌曲。该表以某种方式存储了第一个点击类型的数据。我有一组图片来说明我的意思,但我必须有 10 个代表才能发布图片...
相关代码如下:
class AlbumsInGenreTableViewController: UITableViewController {
var allAlbums : [MPMediaItemCollection] = []
var selectedGenre : NSString!
var selectedArtist : NSString!
let defaultArtwork = UIImage(named: "No-artwork-albums")
var numberOfSongs : [Int] = []
var albumCount = 0
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
var albumsQuery = MPMediaQuery.songsQuery()
var artistPredicate = MPMediaPropertyPredicate(value: self.selectedArtist, forProperty: MPMediaItemPropertyAlbumArtist, comparisonType: .EqualTo)
var genrePredicate = MPMediaPropertyPredicate(value: self.selectedGenre, forProperty: MPMediaItemPropertyGenre, comparisonType: .EqualTo)
albumsQuery.addFilterPredicate(artistPredicate)
albumsQuery.addFilterPredicate(genrePredicate)
albumsQuery.groupingType = MPMediaGrouping.Album
self.allAlbums = []
self.allAlbums += albumsQuery.collections as [MPMediaItemCollection]
var label = UILabel(frame: CGRectMake(10.0, 0.0, 50.0, 40.0))
label.backgroundColor = UIColor.clearColor()
label.font = UIFont.boldSystemFontOfSize(14.0)
let albumsArtist = self.selectedArtist as NSString
let albumArtistName = albumsArtist.substringToIndex(min(25, albumsArtist.length))
self.albumCount = self.allAlbums.count
for album in self.allAlbums{
self.numberOfSongs.append(album.count)
}
... more irrelevant code
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("albumCell", forIndexPath: indexPath) as AlbumsInGenreTableViewCell
var rowItem = self.allAlbums[indexPath.row].representativeItem
cell.albumName.text = "\(rowItem.valueForProperty(MPMediaItemPropertyAlbumTitle) as NSString)"
var trackCount : AnyObject? = numberOfSongs[indexPath.row]
if(trackCount != nil){
cell.albumDetail.text = "\(self.numberOfSongs[indexPath.row]) tracks"
}
... more code
return cell
}
类顶部的数据是从前面的 ViewController
传递过来的:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "albumsInGenre"{
let albumsVC = segue.destinationViewController as AlbumsInGenreTableViewController
var selectedIndex = self.tableView.indexPathForCell(sender as UITableViewCell)!.row
var selectedItem = self.allArtists[selectedIndex].representativeItem
var artistsName = selectedItem.valueForProperty(MPMediaItemPropertyAlbumArtist) as NSString
albumsVC.selectedGenre = self.selectedGenre as NSString
albumsVC.selectedArtist = artistsName as NSString
}
}
我尝试在 viewWillAppear()
中使用 self.tableView.reloadData()
但这也不起作用。在其他流派选择上, View 显示正确的数据 -
只有当一张专辑分为多个流派时,表格才会决定保留第一个被选中的流派。我希望我已经充分解释了我的问题。
谢谢!
编辑:链接到图片! http://imgur.com/a/yG2Jm
编辑 2:我试图覆盖 prepareForReuse 方法:
class AlbumsInGenreTableViewCell: UITableViewCell {
@IBOutlet var albumArt: UIImageView!
@IBOutlet var albumName: UILabel!
@IBOutlet var albumDetail: UILabel!
override func prepareForReuse() {
super.prepareForReuse()
self.albumDetail.text = nil
self.albumName.text = nil
self.albumArt.image = nil
}
}
不幸的是仍然收到相同的结果
编辑 3:
在 prepareForReuse() 方法不起作用之后,我被引导相信 View 在彼此之间发送不正确的数据(流派)。然后我将标题设置为专辑 View 作为它从以前的 View Controller 收到的流派,但即使这样也很好。然后我尝试实现 viewWillAppear() 并在此处重新设置 mediaQuery 以及在 View 首次加载时从数组中删除所有值。不幸的是,这些都没有奏效。我真的看不出哪里出了问题。我也曾尝试在 viewWillAppear() 中重新加载数据,但无济于事。我的下一次尝试是从之前的 View Controller 返回整个 numberOfSongs 数组。我有一种感觉,即使这可行,当我实际去列出专辑中的歌曲时,我也会遇到同样的问题。
编辑 4 - 这是一个 iOS 错误:
此错误也存在于股票音乐应用程序中!我早该检查一下,但在股票音乐应用程序中发生了完全相同的事情!这是复制错误的方法:
最佳答案
细胞被重复使用。当你得到一个单元格时,不要假设它是空白的。例如,在这段代码中:
if(trackCount != nil){
cell.albumDetail.text = "\(self.numberOfSongs[indexPath.row]) tracks"
}
文本可能已经设置好。您应该添加一个 else
block 以将文本设置为其默认状态。
您还可以在 prepareForReuse
中将单元格重置为其默认状态。
关于ios - tableview 加载一些旧数据 - 库存 iOS 音乐应用程序中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29571307/
我想要显示正在加载的 .gif,直到所有内容都已加载,包括嵌入的 iframe。但是,目前加载 gif 会在除 iframe 之外的所有内容都已加载后消失。我怎样才能让它等到 iframe 也加载完毕
首先,这是我第一次接触 Angular。 我想要实现的是,我有一个通知列表,我必须以某种方式限制 limitTo,因此元素被限制为三个,在我单击按钮后,其余的应该加载。 我不明白该怎么做: 设置“ V
我正在尝试在我的设备上运行这个非常简单的应用程序(使用 map API V2),并且出于某种原因尝试使用 MapView 时: 使用 java 文件: public class MainMap e
我正在使用 Python 2.6、Excel 2007 Professional 和最新版本的 PyXLL。在 PyXLL 中加载具有 import scipy 抛出异常,模块未加载。有没有人能够在
我想做这个: 创建并打包原始游戏。然后我想根据原始游戏中的蓝图创建具有新网格/声音/动画和蓝图的其他 PAK 文件。原始游戏不应该知道有关其他网格/动画/等的任何信息。因此,我需要在原始游戏中使用 A
**摘要:**在java项目中经常会使用到配置文件,这里就介绍几种加载配置文件的方法。 本文分享自华为云社区《【Java】读取/加载 properties配置文件的几种方法》,作者:Copy工程师。
在 Groovy 脚本中是否可以执行条件导入语句? if (test){ import this.package.class } else { import that.package.
我正在使用 NVidia 视觉分析器(来自 CUDA 5.0 beta 版本的基于 eclipse 的版本)和 Fermi 板,我不了解其中两个性能指标: 全局加载/存储效率表示实际内存事务数与请求事
有没有办法在通过 routeProvider 加载特定 View 时清除 Angular JS 存储的历史记录? ? 我正在使用 Angular 创建一个公共(public)安装,并且历史会积累很多,
使用 Xcode 4.2,在我的应用程序中, View 加载由 segue 事件触发。 在 View Controller 中首先调用什么方法? -(void) viewWillAppear:(BOO
我在某些Django模型中使用JSONField,并希望将此数据从Oracle迁移到Postgres。 到目前为止,当使用Django的dumpdata和loaddata命令时,我仍然没有运气来保持J
创建 Nib 时,我需要创建两种类型:WindowNib 或 ViewNib。我看到的区别是,窗口 Nib 有一个窗口和一个 View 。 如何将 View Nib 加载到另一个窗口中?我是否必须创建
我想将多个env.variables转换为静态结构。 我可以手动进行: Env { is_development: env::var("IS_DEVELOPMENT")
正如我从一个测试用例中看到的:https://godbolt.org/z/K477q1 生成的程序集加载/存储原子松弛与普通变量相同:ldr 和 str 那么,宽松的原子变量和普通变量之间有什么区别吗
我有一个重定向到外部网站的按钮/链接,但是外部网站需要一些时间来加载。所以我想添加一个加载屏幕,以便外部页面在显示之前完全加载。我无法控制外部网站,并且外部网站具有同源策略,因此我无法在 iFrame
我正在尝试为我的应用程序开发一个Dockerfile,该文件在初始化后加载大量环境变量。不知何故,当我稍后执行以下命令时,这些变量是不可用的: docker exec -it container_na
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我刚刚遇到一个问题,我有一个带有一些不同选项的选择标签。 现在我想检查用户选择了哪些选项。 然后我想将一个新的 html 文件加载到该网站(取决于用户选中的选项)宽度 javascript,我该怎么做
我知道两种保存/加载应用程序设置的方法: 使用PersistentStore 使用文件系统(存储,因为 SDCard 是可选的) 我想知道您使用应用程序设置的做法是什么? 使用 PersistentS
我开始使用 Vulkan 时偶然发现了我的第一个问题。尝试创建调试报告回调时(验证层和调试扩展在我的英特尔 hd vulkan 驱动程序上可用,至少它是这么说的),它没有告诉我 vkCreateDeb
我是一名优秀的程序员,十分优秀!