简体   繁体   English

搜索结果未在DetailViewController中显示正确的数据(Swift 3)

[英]Search results not showing right data in DetailViewController (Swift 3)

I have 3 objects being sent to the DetailViewController (Title, Date, Body) through the default Segue func in Swift. 我有3个对象通过Swift中的默认Segue函数被发送到DetailViewController(标题,日期,正文)。 I am only searching the Title data though. 我只是在搜索标题数据。 That part works perfectly but when tapping on the cell in the SearchController, it brings me to the wrong view. 该部分可以正常工作,但是当点击SearchController中的单元格时,它将带我到错误的视图。 (Title is right in the view but the date and body don't match). (标题在视图中正确,但日期和正文不匹配)。

Segue func: Segue功能:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        if let indexPath = self.tableView.indexPathForSelectedRow {

            var object = tableTitle[indexPath.row] as String
            var objectTwo = detailDate[indexPath.row] as String
            var objectThree = tableBody[indexPath.row] as String

            let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController

            if resultSearchController.isActive {

                object = filteredTableData[indexPath.row]

            } else {

                object = tableTitle[indexPath.row]
                objectTwo = detailDate[indexPath.row]
                objectThree = tableBody[indexPath.row]

            }

            controller.detailItem = object
            controller.detailItemTwo = objectTwo
            controller.detailItemThree = objectThree
            controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem
            controller.navigationItem.leftItemsSupplementBackButton = true
        }
    }
}

cellForRowAt func: cellForRowAt函数:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomTableViewCell

    let imageView = UIImage(named: "dIndicator")
    cell.accessoryView = UIImageView(image: imageView)

    let object = tableTitle[indexPath.row]
    let objectTwo = tableBody[indexPath.row]
    let objectThree = tableDate[indexPath.row]

    if self.resultSearchController.isActive {
        cell.titleLabel!.text = filteredTableData[indexPath.row]
        cell.detailLabel!.text = ""
        cell.dateLabel!.text = ""

    } else {
        cell.titleLabel!.text = object
        cell.detailLabel!.text = objectTwo
        cell.dateLabel!.text = objectThree
    }

    return cell
}

updateSearchResults func: updateSearchResults函数:

func updateSearchResults(for searchController: UISearchController) {

    filteredTableData.removeAll(keepingCapacity: false)
    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
    let array = (tableTitle as NSArray).filtered(using: searchPredicate)
    filteredTableData = array as! [String]
    self.tableView.reloadData()

}

Any help would be greatly appreciated! 任何帮助将不胜感激!

EDIT: 编辑:

struct objectsToPass {

var annTitle = [String]()
var annBody = [String]()
var annDate = [Date]()
var annDateALT = [Date]()

var tableData : [([String], [String], [Date], [Date])] {
    get {
        return [(annTitle, annBody, annDate, annDateALT)]
    }
}

}

Try this: 尝试这个:

struct myObject {

    var title: String
    var body: String
    var date: Date
    var altDate: Date
}

then have two arrays for your table data and filtered table data 然后有两个数组用于表数据和过滤后的表数据

var tableData = [myObject]()
var filteredData = [myObject]()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在DetailViewController Swift中更改数据 - Change data in DetailViewController Swift DetailViewController不显示Twitter趋势的数据 - DetailViewController not showing the data for Twitter Trends 在TableView中显示搜索结果时没有结果-Swift - No Results when showing search results in TableView - swift 来自UITableViewController的按钮将数据发送到detailViewController - swift - Button from UITableViewController sends data to detailViewController - swift 在Swift中从视图控制器之间传递数据(从TableView到DetailViewController) - Passing data between View Controllers in Swift (From TableView to DetailViewController) UISplitViewController,重用DetailViewController(Swift) - UISplitViewController, reuse DetailViewController (Swift) 使用prepareForSegue为DetailViewController搜索栏 - Search Bar with prepareForSegue for DetailViewController url 数据任务在使用 SwiftSoup 解析时未显示正确的内容? Swift 5 - url data task is not showing the right content when parsed with SwiftSoup? Swift 5 来自DetailViewController的数据未显示 - Data from DetailViewController not displaying 在UITableView Swift中搜索结果 - Search Results in a UITableView Swift
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM