我尝试通过创建表示每个列表项的类来练习使用模型制作列表应用。我有一个Category类,它包含三个属性 - 两个字符串和一个字符串数组。这是班级:
class Category {
var name: String
var emoji: String
var topics: [String]
// (the getCategories method listed below goes here) //
init(name: String, emoji: String, topics: [String]) {
self.name = name
self.emoji = emoji
self.topics = topics
}
在我的Category类中,我有一个方法可以为类别赋值,这样我就可以将它们保留在视图控制器之外。这种方法如下:
class func getCategories() -> [Category]
{
let categories = [Category(name:"cat", emoji:"", topics: ["paws","tails", "fur", "pussyfoot","purr", "kitten", "meow"])
]
return categories
}
在我的一个tableview控制器文件中,我试图通过将其设置为getCategories方法中主题的主题计数来获取部分中的行数。我没做什么似乎工作,虽然我能够得到getCategories方法中的类别的计数...我似乎无法专门访问主题数组。
这是我为了获得类别而做的工作......
var categories = Category.getCategories()
....
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return categories.count
}
我需要这样做,除了我需要获取我在getCategories方法中设置的主题的数量。
非常感谢! :)
答案 0 :(得分:0)
由于categories
是Category
个对象的数组,因此您需要访问正确的索引,然后访问主题数组并获取计数:
categories[section].topics.count
答案 1 :(得分:0)
我认为你缺少的那篇文章是你需要知道你想从哪个部分获得主题数。这应该通过表视图数据源回调为您提供。
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return categories[section].topics.count
}
此外,当您需要访问特定主题时,您将通过indexPath
。
func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let topic = categories[indexPath.section].topics[indexPath.row]
let cell = …
…
return cell
}