2016-09-20 7 views
1
import UIKit 

class orderPo: UITableViewController{ 
var sections : [(index: Int, length :Int, title: String)] = Array() 
var array = ["Moscow", "@Saint Petersburg", "Novosibirsk", "Novosibirsk", "Nizhny Novgorod", "Samara", "Omsk", "Kiyv", "Odessa", "@Donetsk", "Harkiv", "Lviv", "Uzhgorod", "Zhytomyr", "Luhansk", "Mikolayv", "Kherson", "Germany", "Berlin", "Hamburg", "Munich", "Cologne", "Frankfurt", "Stuttgart", "Düsseldorf", "Dortmund", "Essen", "Bremen", "Abilene", "Akron", "Albuquerque", "Alexandria", "Allentown", "Amarillo", "Anaheim", "Anchorage", "Ann Arbor", "Antioch", "Arlington", "Arvada", "Athens", "Atlanta", "Augusta", "Aurora", "Austin", "Bakersfield", "Baltimore", "Baton Rouge", "Beaumont", "Bellevue", "Berkeley", "Billings", "Birmingham", "Boise", "Boston", "Boulder", "Bridgeport", "Broken Arrow", "Brownsville", "Buffalo", "Burbank", "Cambridge", "Cape Coral", "Carlsbad", "Carrollton", "Cary", "Cedar Rapids", "Centennial", "Chandler", "Charleston", "Charlotte", "Chattanooga", "Chesapeake", "Chicago", "Chula Vista", "Cincinnati", "Clarksville", "Clearwater", "Cleveland", "College Station", "Colorado Springs", "Columbia", "Columbus", "Concord", "Coral Springs", "Corona", "Corpus Christi", "Costa Mesa", "Dallas", "Daly City", "Davenport", "Dayton", "Denton", "Denver", "Des Moines", "Detroit", "Downey", "Durham", "Edison", "El Cajon", "El Monte", "El Paso", "Elgin", "Elizabeth", "Elk Grove", "Erie", "Escondido", "Eugene", "Evansville", "Everett", "Fairfield", "Fargo", "Fayetteville", "Fontana", "Fort Collins", "Fort Lauderdale", "Fort Wayne", "Fort Worth", "Fremont", "Fresno", "Frisco", "Fullerton", "Gainesville", "Garden Grove", "Garland", "Gilbert", "Glendale", "Grand Prairie", "Grand Rapids", "Green Bay", "Greensboro", "Gresham", "Hampton", "Hartford", "Hayward", "Henderson", "Hialeah", "High Point", "Hollywood", "Honolulu", "Houston", "Huntington Beach", "Huntsville", "Independence", "Indianapolis", "Inglewood", "Irvine", "Irving", "Jackson", "Jacksonville", "Jersey City", "Joliet", "Kansas City", "Kent", "Killeen", "Knoxville", "Lafayette", "Lakeland", "Lakewood", "Lancaster", "Lansing", "Laredo", "Las Cruces", "Las Vegas", "Lewisville", "Lexington", "Lincoln", "Little Rock", "Long Beach", "Los Angeles", "Louisville", "Lowell", "Lubbock", "Madison", "Manchester", "McAllen", "McKinney", "Memphis", "Mesa", "Mesquite", "Miami", "Miami Gardens", "Midland", "Milwaukee", "Minneapolis", "Miramar", "Mobile", "Modesto", "Montgomery", "Moreno Valley", "Murfreesboro", "Murrieta", "Naperville", "Nashville", "New Haven", "New Orleans", "New York", "Newark", "Newport News", "Norfolk", "Norman", "North Charleston", "North Las Vegas", "Norwalk", "Oakland", "Oceanside", "Oklahoma City", "Olathe", "Omaha", "Ontario", "Orange", "Orlando", "Overland Park", "Oxnard", "Palm Bay", "Palmdale", "Pasadena", "Paterson", "Pearland", "Pembroke Pines", "Peoria", "Peoria", "Philadelphia", "Phoenix", "Pittsburgh", "Plano", "Pomona", "Pompano Beach", "Port St. Lucie", "Portland", "Providence", "Provo", "Pueblo", "Raleigh", "Rancho Cucamonga", "Reno", "Rialto", "Richardson", "Richmond", "Riverside", "Rochester", "Rockford", "Roseville", "Round Rock", "Sacramento", "Saint Paul", "Salem", "Salinas", "Salt Lake City", "San Antonio", "San Bernardino", "San Diego", "San Francisco", "San Jose", "San Mateo", "Santa Ana", "Santa Clara", "Santa Clarita", "Santa Maria", "Santa Rosa", "Savannah", "Scottsdale", "Seattle", "Shreveport", "Simi Valley", "Sioux Falls", "South Bend", "Spokane", "Springfield", "St. Louis", "St. Petersburg", "Stamford", "Sterling Heights", "Stockton", "Sunnyvale", "Surprise", "Syracuse", "Tacoma", "Tallahassee", "Tampa", "Temecula", "Tempe", "Thornton", "Thousand Oaks", "Toledo", "Topeka", "Torrance", "Tucson", "Tulsa", "Tyler", "Vallejo", "Vancouver", "Ventura", "Victorville", "Virginia Beach", "Visalia", "Waco", "Warren", "Washington", "Waterbury", "West Covina", "West Jordan", "West Palm Beach", "West Valley City", "Westminster", "Wichita", "Wichita Falls", "Wilmington", "Winston–Salem", "Woodbridge", "Worcester", "Yonkers", "York"] 
var filterArray :[String] = [] 

func filterContentForSearchText(searchText: String, scope: String = "All"){ 
    filterArray = array.filter{ text in return text.lowercaseString.containsString(searchText.lowercaseString) 
} 
    if searchController.active && searchController.searchBar.text != ""{ 
     sections = [] 
     filterArray.sortInPlace { $0 < $1 } // sort by alphabetic 
     var index = 0; 
     for (var i = 0; i < filterArray.count; i++) { 
      let commonPrefix = filterArray[i].commonPrefixWithString(filterArray[index], options: .CaseInsensitiveSearch) 
      if (commonPrefix.isEmpty) { 
       let string = filterArray[index].uppercaseString; 
       let firstCharacter = string[string.startIndex] 
       let title = "\(firstCharacter)" 
       let newSection = (index: index, length: i - index, title: title) 
       sections.append(newSection) 
       index = i; 
      } 

     } 
    } 
    tableView.reloadData() 
} 

let searchController = UISearchController(searchResultsController: nil) 
override func viewDidLoad() { 


    array.sortInPlace { $0 < $1 } // sort by alphabetic 
    var index = 0; 
    for (var i = 0; i < array.count; i++) { 
     let commonPrefix = array[i].commonPrefixWithString(array[index], options: .CaseInsensitiveSearch) 
     if (commonPrefix.isEmpty) { 
      let string = array[index].uppercaseString; 
      let firstCharacter = string[string.startIndex] 
      let title = "\(firstCharacter)" 
      let newSection = (index: index, length: i - index, title: title) 
      sections.append(newSection) 
      index = i; 
     } 
     } 

    searchController.searchResultsUpdater = self 
    searchController.dimsBackgroundDuringPresentation = false 
    definesPresentationContext = true 
    tableView.tableHeaderView = searchController.searchBar 
} 


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

    return sections.count 

} 

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

    return sections[section].length 

} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell; 
    if searchController.active && searchController.searchBar.text != ""{ 
    cell.textLabel?.text = filterArray[sections[indexPath.section].index + indexPath.row] 
    } 
    else{ 
    cell.textLabel?.text = array[sections[indexPath.section].index + indexPath.row] 
    } 
    return cell 

} 

override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String { 

    return sections[section].title 

} 


override func sectionIndexTitlesForTableView(tableView: UITableView) -> [String]? { 
    return sections.map { $0.title } 
} 


override func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int { 

    return index 

} 


} 

extension orderPo:UISearchResultsUpdating{ 
func updateSearchResultsForSearchController(searchController: UISearchController) { 
    filterContentForSearchText(searchController.searchBar.text!) 
} 
} 

セクションインデックスバーの高さを設定するにはどうすればよいですか?今すぐ検索バーと重なってしまいます。それは検索バーをカバーします。検索バーのすぐ下のセクションインデックスバーを作成する方法。どうやってするか?どんな助けもありがたいですセクションインデックスが検索バーと重複しています(スウィフト)

答えて

0

SearchControllerはScopeBarをサポートするようには設計されていません。それはあなたのために簡単なユースケースを処理するコントローラです。スコープバーが必要な場合は、ストーリーボードにUISearchBarコンポーネントを追加し、デリゲート関数を実装して検索を処理する必要があります。

関連する問題