Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift搜索栏和Tableview结果问题_Swift_Tableview_Searchbar - Fatal编程技术网

Swift搜索栏和Tableview结果问题

Swift搜索栏和Tableview结果问题,swift,tableview,searchbar,Swift,Tableview,Searchbar,你好 如图所示,当我搜索任何内容时,它会将结果覆盖在原始单元格上。白色的是没有任何搜索的结果,黑色的是搜索的结果。我在单击单元格和分段时没有问题或错误。这是什么原因造成的?谢谢大家! PS:MyTableView通过internet从3个不同的MS SQL查询中填充,它们合并到一个数组中。因此,当我搜索时,它不会在MS SQL上重新查询 这是我的代码:“我删除了一些不必要的部分,如效果等” 你能帮我发一些密码吗?是否使用两个表视图?一个用于显示原始数据,另一个用于显示搜索结果?不,我使用的是si

你好

如图所示,当我搜索任何内容时,它会将结果覆盖在原始单元格上。白色的是没有任何搜索的结果,黑色的是搜索的结果。我在单击单元格和分段时没有问题或错误。这是什么原因造成的?谢谢大家!

PS:MyTableView通过internet从3个不同的MS SQL查询中填充,它们合并到一个数组中。因此,当我搜索时,它不会在MS SQL上重新查询

这是我的代码:“我删除了一些不必要的部分,如效果等”


你能帮我发一些密码吗?是否使用两个表视图?一个用于显示原始数据,另一个用于显示搜索结果?不,我使用的是single TableView。您可以发布一些代码吗?我更新了问题好的,这是我的错,我没有在搜索活动原因上键入我的标签。很抱歉浪费你的时间
import UIKit

class KalipTableViewController: UITableViewController, UISearchBarDelegate, UISearchDisplayDelegate {

    var link = ""
    var profillistesi = [String]()

    @IBOutlet weak var searchBar: UISearchBar!
    var searchActive : Bool = false
    var filtered:[String] = []

    @IBAction func getir(sender: AnyObject) {

        if self.link == "checking external ip here" {

            var client = SQLClient()
            client.connect("server-ip", username: "username", password: "password", database: "database-name") {
                success in

                if success {
                    client.execute("select KalipNo from Kaliplar order by KalipNo asc") {
                        sonuc in

                        for table in sonuc as NSArray {
                            for row in table as! NSArray {
                                for column in row as! NSDictionary {
                                    self.profillistesi.append("\(column.value)")

                                }
                            }
                        }
                        client.disconnect()
                    }
                }
            }
        } else if self.link == "checking emergency external ip here"

            var client = SQLClient()
            client.connect("server-ip", username: "username", password: "password", database: "database-name") {
                success in

                if success {
                    client.execute("select KalipNo from Kaliplar order by KalipNo asc") {
                        sonuc in

                        for table in sonuc as NSArray {
                            for row in table as! NSArray {
                                for column in row as! NSDictionary {
                                    self.profillistesi.append("\(column.value)")

                                }
                            }
                        }
                        client.disconnect()
                    }
                }
            }
        } else {

            var client = SQLClient()
            client.connect("server-ip", username: "username", password: "password", database: "database-name") {
                success in

                if success {
                    client.execute("select KalipNo from Kaliplar order by KalipNo asc") {
                        sonuc in

                        for table in sonuc as NSArray {
                            for row in table as! NSArray {
                                for column in row as! NSDictionary {
                                    self.profillistesi.append("\(column.value)")

                                }
                            }
                        }
                        client.disconnect()
                        self.tableView.reloadData()

                    }
                }
            }

        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self
        searchBar.delegate = self

        let url = NSURL(string: "external ip of server"
        let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
            //print(NSString(data: data!, encoding: NSUTF8StringEncoding))
            self.link = NSString(data: data!, encoding: NSUTF8StringEncoding) as! String
        }
        task.resume()

       }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if(searchActive) {
            return filtered.count
        }
        return  profillistesi.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> KalipTableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! KalipTableViewCell

        if(searchActive){
            cell.textLabel?.text = filtered[indexPath.row]

        } else {

        cell.kalipCell.text = profillistesi[indexPath.row] as? String

        }
        return cell
    }

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

        if segue.identifier == "kalipSegue" {

            let gecis: KalipViewController = segue.destinationViewController as! KalipViewController
            let gecis2 = tableView.indexPathForSelectedRow?.row

            gecis.kalipNo = profillistesi[gecis2!]

        }

    }

    func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
        searchActive = true;
    }

    func searchBarTextDidEndEditing(searchBar: UISearchBar) {
        searchActive = false;
        self.searchBar.endEditing(true)
    }

    func searchBarCancelButtonClicked(searchBar: UISearchBar) {
        searchActive = false;
        self.searchBar.endEditing(true)
    }

    func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        searchActive = false;
        self.searchBar.endEditing(true)
    }

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

        filtered = profillistesi.filter({ (text) -> Bool in
            let tmp: NSString = text
            let range = tmp.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
            return range.location != NSNotFound
        })
        if(filtered.count == 0){
            searchActive = false;
        } else {
            searchActive = true;
        }
        self.tableView.reloadData()
    }
}