【问题标题】:Search for an Array from a UICollectionView从 UICollectionView 中搜索数组
【发布时间】:2017-10-09 08:56:23
【问题描述】:

我正在制作一个应用程序,用户可以在其中搜索 UICollectionView 中的图像名称。目前,用户可以为每个图像命名,并将名称存储到一个名为 arrayOfName 的数组中。

我添加了一个搜索栏,我可以使用以下方法成功测试其文本:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {


        if (searchText.lowercased() == "test") {


            print("TEST")

        }
}

func addImgNames() {
        for _ in 0...20 {
            imgNames.append("imageNames")
        }

    }

现在这是用户对图像的命名:

let arrayOfNames = defaults.object(forKey: "imageNames") as? [Optional] ?? [String]()

        if let nameOfImage = (arrayOfNames[imgCell]) {
          self.navigationItem.title = nameOfImage

此外,搜索栏委托和 arrayOfNames 函数位于两个独立的类中,这使得它变得更加困难。

如何测试存储在数组中的名称?

谢谢!!

【问题讨论】:

  • 你应该过滤你的数组,例如:arrayOfNames.filter {$0.contains(searchText.lowercased())}
  • @MagoNicolasPalacios arrayOfNames 不是通用的...所以我不知道该怎么办。
  • 也许你应该让它通用,以便能够在任何地方访问它,否则,如果你正在改变视图,你可以在执行 segue 时传递它。
  • @MagoNicolasPalacios 我不知道该怎么做...你介意写一个答案吗?
  • 我或许可以提供帮助,但您需要提供更多其他类的代码以及如何进入搜索屏幕。

标签: arrays swift search uicollectionview searchbar


【解决方案1】:

你应该过滤你的数组,例如:

arrayOfNames.filter {$0.searchInfo.contains(searchText.lowercased())}

对于访问 arrayOfNames,您可以将其设为全局,或者如果您使用 performWithSegue 和 prepareForSegue 更改视图,则只需传递它。

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多