Swift Table View返回我词典的一些单元格



嗨,我想从我(10k )记录dict中显示100个单元格。我试图用return 100做到这一点,但是它给我错误 - 索引超出范围,这是正常的行为,但我不知道如何使它按照我的需求做好。

问题是,我只想显示100个电池,但我想搜索dict的每个人。这是我的代码:

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        let count = self.items.count
        return 100
    }
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let item: Price = items[indexPath.row]
        tableView.selectRow(at: IndexPath(row: -1, section: 0), animated: false, scrollPosition: UITableViewScrollPosition.none)
        showLargePhoto(price: item)
    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CatalystItem", for: indexPath) as! CatalystTableViewCell
        let item: Price = items[indexPath.row]
        let appSettings: AppSettings = AppSettings()
        cell.lpLabel.text = String(item.no)
        cell.catCermaicValueLabel.text = "(item.ceramWeight) kg"
        if appSettings.getHideMetalWeights() == false {
            cell.catPtValueLabel.text = item.viewPt ?? ""
            cell.catPdValueLabel.text = item.viewPd ?? ""
            cell.catRhValueLabel.text = item.viewRh ?? ""
        }
        else {
            cell.catPtValueLabel.text = ""
            cell.catPdValueLabel.text = ""
            cell.catRhValueLabel.text = ""
        }
        cell.textCategoryLabel?.text = item.group ?? ""
if FileUtilities.fileExists(nridasnString+".jpg") {
            let image: UIImage? = UIImage(named: tmbLocalPath.path)
            let scaledImage: UIImage? = image?.scaleToWidth(width: 100)
            if cell.imageView != nil {
                cell.imageView!.removeFromSuperview()
                let iv: UIImageView = UIImageView(frame: CGRect(x: 20, y: 40, width: 100, height: 75))
                iv.image = scaledImage
                iv.contentMode = .scaleAspectFit
                cell.addSubview(iv)
            }
        }
        return cell
    }

我不知道该怎么做...请杀了我,但我对此做了。

替换

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let count = self.items.count
    return 100
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return min(100,self.items.count)
}

当您返回100个单元时,但是您没有100个元素,您会从项目中获得经典的"阵列"。

您应该意识到这一点,并检查您确实有足够的数据来填充这些单元格或减少单元格的数量。

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let count = self.items.count
    return 100
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return min(100,self.items.count)
}

您过得愉快,欢迎您!

相关内容

最新更新