2016-03-21 22 views
0

Otomatik tamamlama ile bir aramaBar'ı uygulamaya çalışıyorum. Yazmaya başladığımdan sonra bir değer olmadığında, bir "Sonuç yok" hücresinin görünmesini istiyorum. Ancak, searchField'ı ilk seçtiğimde veya tüm karakterleri sildiğimde, hücre başarısız olur. SearchField "" olduğunda görünmesini sağlarım, ancak tanımladığım gibi çalışmasını sağlamanın bir yolunu bulamıyorum.Otomatik Tamamlama SearchBar - Bir değer hücresi değil

Kodum:

@IBOutlet weak var searchField: UISearchBar! 
@IBOutlet var autocompleteTableView: UITableView! 

var pastUrls = ["Men", "Women", "Cats", "Dogs", "Children"] 
var autocompleteUrls = [String]() 
var searchActive : Bool = false 

override func viewDidLoad() { 
    super.viewDidLoad() 
    searchField.delegate = self 
    autocompleteTableView.backgroundColor = UIColor.clearColor() 
    autocompleteTableView!.delegate = self 
    autocompleteTableView!.dataSource = self 
    autocompleteTableView!.scrollEnabled = true 
    autocompleteTableView!.hidden = true 
} 


func searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 
    autocompleteTableView.hidden = false 
    let substring = (searchBar.text! as NSString).stringByReplacingCharactersInRange(range, withString: text) 
    searchAutocompleteEntriesWithSubstring(substring) 
    return true 
} 

func searchAutocompleteEntriesWithSubstring(substring: String) { 
    autocompleteUrls.removeAll(keepCapacity: false) 
    for curString in pastUrls { 
     if curString.lowercaseString.rangeOfString(substring) != nil { 
      autocompleteUrls.append(curString) 
     } 
    } 
    autocompleteTableView!.reloadData() 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return autocompleteUrls.count 

} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCellWithIdentifier("cell") 

    if let _ = cell { 
     let index = indexPath.row as Int 
     cell!.textLabel!.text = autocompleteUrls[index] 
    } else { 
     cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "cell") 
    } 
    return cell! 

} 

cevap

0

senin dizi boştur ve eğer 1.

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if autocompleteUrls.count != 0 { 
     return autocompleteUrls.count 
    } 

    return 1 

} 

Ayrıca dönerseniz Sen den DZNEmptyDataSet kullanabilirsiniz, sizin numberOfRowsInSection yöntemde kontrol etmek gerekir GitHub, görüntülenecek veri yoksa tableView öğenizde bir şey sunacak güzel bir temsilci kümesidir.