【发布时间】:2019-07-11 06:05:43
【问题描述】:
我有表格视图,我需要在其中显示几个部分。你应该把这张表想象成你的歌曲的播放列表。在顶部的第一部分中,我需要显示一个带有按钮的单元格,它将向播放列表添加更多歌曲,而 tableview 的其他部分是音乐类别的标题标题(如流行、摇滚等)。这些部分中的每一个都包含作为歌曲名称的单元格。
我有一系列这样的歌曲:var songsGroups = [SongGroup]。这实际上是我的数据源。
SongGroup 包含几个属性:
var categoryName: String
var songs: [Songs]
但问题出现在下一个级别。我每次都需要检查 indexPath.section 并这样做:
if indexPath.section == 0 {
// this is a section for ADD NEW SONG BUTTON cell no need in header title as there is no data repression only static text on the cell.
} else {
var musicCategoryName = songsGroups[indexPath.seciton - 1]. categoryName
headerTitle.title = musicCategoryName
}
正如你所见,我的代码通过添加这个很酷的-1 神奇数字变得神奇。我重播一点也不喜欢。
作为一个想法,我可以尝试将我的 ADD NEW SONG BUTTON 部分(通过添加一些额外的对象)与songsGroups 数组结合起来,并为此创建 NSArray。正如你所记得的,就像在 Objective-C 中一样。那么我的数据源数组将如下所示:
some NSArray = ["empty data for first cell", songsGroups[0], songsGroups[1]... etc]
因此,无需检查任何我们可以信任我们的数组来构建所有内容的部分,即使我将添加更多空数据单元格,我也无需通过 if 块处理我的代码并添加大量神奇数字.
但我在这里看到的问题是我们不使用显式类型的数组,这很令人不安。
所以也许你知道如何解决我的问题的更漂亮的解决方案。
【问题讨论】:
-
退后一步,必须按钮在表格单元格中吗?为什么不把它放在标题、导航栏或单独的视图中?
-
@JoshCaswell 是的,这是一个有效的评论,但我想这仅适用于我们为某些带有静态文本的 UI 控件使用顶部单元格或顶部部分的情况,以防系统的灵活性和理论上,我们可以将一些带有静态文本的空数据单元格放在任何索引中,而不仅仅是在整个屏幕的顶部或底部。所以灵活性对我来说也很重要。但感谢您的评论!
标签: ios arrays swift uitableview nsarray