gpt4 book ai didi

swift - 使用搜索栏时桌面 View 中的图片会发生变化

转载 作者:行者123 更新时间:2023-11-30 10:12:08 25 4
gpt4 key购买 nike

我创建了一个 TableView,其中包含一个包含标签和图像的单元格。当我不使用搜索栏时,一切正常,但当我使用搜索栏时,始终首先显示图片 1.png。使用搜索栏时是否可以将图片连接到标签?感谢您的帮助

import UIKit

class TableViewController: UITableViewController, UISearchResultsUpdating {

var TitleList = ["101", "121", "122", "131", "132"]
let ImageList = ["1.png", "2.png", "3.png", "4.png", "5.png"]



var filteredfarger = [String]()
var resultSearchController = UISearchController()


override func viewDidLoad() {
super.viewDidLoad()

self.resultSearchController = UISearchController(searchResultsController: nil)
self.resultSearchController.searchResultsUpdater = self
self.resultSearchController.dimsBackgroundDuringPresentation = false
self.resultSearchController.searchBar.sizeToFit()
self.tableView.tableHeaderView = self.resultSearchController.searchBar
self.tableView.reloadData()


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if self.resultSearchController.active {
return self.filteredfarger.count
}
else {

return self.TitleList.count
}
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! TableViewCell
cell.LabelTitle.text = TitleList[indexPath.row]
cell.CellDescription.text = DescriptionList[indexPath.row]


let imagename = UIImage(named: ImageList[indexPath.row])
cell.CellImage.image = imagename



if self.resultSearchController.active {
cell.LabelTitle?.text = self.filteredfarger[indexPath.row]
}
else {
cell.LabelTitle?.text = self.TitleList[indexPath.row]
}

return cell


}

func updateSearchResultsForSearchController(searchController: UISearchController) {

self.filteredfarger.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
let array = (self.TitleList as NSArray).filteredArrayUsingPredicate(searchPredicate)
self.filteredfarger = array as! [String]
self.tableView.reloadData()


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

if (segue.identifier == "DetailView") {
let VC = segue.destinationViewController as! DetailedViewController
if let cell = sender as? TableViewCell {
VC.SentData1 = cell.LabelTitle.text
}
}
}

最佳答案

当您搜索时,过滤后的数组将仅包含匹配的标题。很可能只有一个匹配项,因此 Filteredfarger.count 为 1。

当搜索时调用cellForRowAtIndexPath时,根据UIImage(named: ImageList[indexPath.row])生成图像。由于filteredfarger.count 为 1,因此只会创建 1 行,同样 indexPath.row 将为 0。这将导致图像 1.png 始终从 ImageList 数组中引用。

关于swift - 使用搜索栏时桌面 View 中的图片会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com