ios - 快速链接所有搜索栏结果到同一个 View Controller

标签 ios swift segue searchbar

我有一个 SearchViewController。 SearchViewController 的图像是:- enter image description here

SearchViewController 的代码是:-

import UIKit  
class SearchViewController: UIViewController, UITableViewDataSource,      UISearchBarDelegate    {

   @IBOutlet weak var tableView: UITableView!
   @IBOutlet weak var searchBar: UISearchBar!
   let data = ["New York, NY", "Los Angeles, CA", "Chicago, IL", "Houston, TX",
               "Philadelphia, PA", "Phoenix, AZ", "San Diego, CA", "San Antonio, TX",
               "Dallas, TX", "Detroit, MI", "San Jose, CA", "Indianapolis, IN",
               "Jacksonville, FL", "San Francisco, CA", "Columbus, OH", "Austin, TX",
               "Memphis, TN", "Baltimore, MD", "Charlotte, ND", "Fort Worth, TX"]


   var filteredData: [String]!

   override func viewDidLoad() {
       super.viewDidLoad()
       tableView.dataSource = self
       searchBar.delegate = self
       filteredData = data
   }

   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = tableView.dequeueReusableCell(withIdentifier: "TableCell", for: indexPath) as UITableViewCell
       cell.textLabel?.text = filteredData[indexPath.row]
       return cell
   }  

   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return filteredData.count
   }
   // This method updates filteredData based on the text in the Search Box
   func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
       let  searchT =  searchText.count < 2 // will give sulggestion when at least 2 chrs in box
       filteredData = searchT ? data : data.filter { (item: String) -> Bool in
           // If dataItem matches the searchText, return true to include it
           return item.range(of: searchText, options: .caseInsensitive, range: nil, locale: nil) != nil
       }
       func updateSearchResults(for searchBar: UISearchBar) {
           view.isHidden = true
       }
       tableView.reloadData()
   }
}

“SearchViewController”工作正常,没问题。现在,我试图通过 segue 将“SearchViewController”链接到另一个 ViewController,比如“AllSegueViewController”,它位于“SearchViewController”的右侧。 Segue 的名称是“PickUpSegueFromRight”(参见上面的第一张图片和下面的代码)。 segue 通常工作正常,即向右滑动,但在这种情况下不是。

import UIKit

class PickUpSegueFromRight: UIStoryboardSegue {
    override func perform() {
        let src = self.source
        let dst = self.destination

        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
        dst.view.transform = CGAffineTransform(translationX: +src.view.frame.size.width, y: 0)

        UIView.animate(withDuration: 0.25,
                       delay: 0.0,
                       options: [.curveEaseIn, .curveEaseOut],
                       animations: {
            dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
        }, completion: { finished in
            src.present(dst, animated: false, completion: nil)
        })
    }
}

当我在模拟器上运行“SearchViewController”时,它工作正常,如下图所示:- enter image description here

我的问题:- 我的第一个也是主要问题是我应该在“SearchViewController”和/或“PickUpSegueFromRight”和/或“AllSegueViewController”中添加什么,以便当我单击任何搜索结果时,例如。 “Chicago, IL”(见上面的模拟器图片),它应该转到“AllSegueViewController”?其次,我想在“AllSegueViewController”中添加/附加搜索结果。我的第二个小问题是我还想向所有搜索结果行添加箭头图像,例如。 “芝加哥,伊利诺伊州”等,因此它应该建议用户点击它应该向右滑动到“AllSegueViewController”。

最佳答案

  1. 无需使用 PickUpSegueFromRight 类,更简单的方法是单击转场并在属性检查器中设置转场类型以呈现或推送
  2. 您可以自定义 UITableViewCell 或默认在 UITableviewcell 中使用“披露指示器”

关于ios - 快速链接所有搜索栏结果到同一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58912223/

相关文章:

objective-c - 跟踪 UIView 中的更改

ios - SecItemAdd() 返回 errSecInteractionNotAllowed (-25308)

ios - 在 Objective-C 中锁定一个实例变量

ios - 如何重新加载 UITableView 数据避免卡住

objective-c - C 结构的延迟初始化

xcode - 有没有办法让 UIImagePickerController.allowsEditing = true 时调用的 View 具有圆形而不是方形?

ios - 如何在UITableView中同时调整两列自定义单元格、多行文本对齐

iOS objective-c 执行选择器不执行该方法

objective-c - 使用图像创建自定义动画 segue?

ios - 标签栏在 segue 上消失