2017-01-16 9 views
0

В настоящее время я испытываю некоторые проблемы, и надеялся, что один из экспертов сможет оценить и, надеюсь, ответить на мой вопрос. Я сделал UIPickerView и UISearchController (который находится в UITableViewController), и оба из них не отображали данные из массивов, которые я сделал. Это школьный проект и не должен появляться до вторника, но я надеюсь, что смогу исправить эти небольшие (надеюсь, ошибки). Я покажу вам свои ViewControllers как для UIPickerView, так и для UISearchController. Так вот UIPickerView:UIPickerView и UISearchController не отображают данные


import UIKit 

class SecondViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate { 

@IBOutlet weak var txtTest: UITextField! 

@IBOutlet weak var Picker1: ThePickerView! 
var sellInvestments = ["Airbnb", "CloudFlare", "GitHub", "slack", "Snapchat", "Uber"] 

override func viewDidLoad() { 
    super.viewDidLoad() 

// Do any additional setup after loading the view. 

    self.Picker1.delegate = self 
    self.Picker1.dataSource = self 
    [self.Picker1.reloadAllComponents] 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 
func pickerView(_pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
    return sellInvestments[row] 
} 
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return sellInvestments.count 
} 
public func numberOfComponents(in pickerView: UIPickerView) -> Int { 

    return 1 
} 

}

А теперь вот UITableViewController (для UISearch)

import UIKit 

class NewTableViewController: UITableViewController, UISearchResultsUpdating { 

let searchInvestments = ["Berlark Company", "Snapchat", "IBM", "Twitter", "Cornerstone on Demand", "Aukvern Capital", "Serene Technologies", "Viacom Industries", "Suvertec", "HIppit", "Avigti Technologies", "Avaret", "Sivlot", "Zebra Sci Automation", "Google", "Apple", "Facebook", "Gradience Imaging", "Vitris", "Voxtrat", "WhattsApp", "Apphat", "Nividia", "Kik", "Cyber Dust", "Turing Technologies", "Sobel Imaging Systems", "Yavid", "Tensor Automation", "Vistapint", "LinkedIn", "Yahoo", "Yelp", "TwitchTv", "OculusRift", "Lg", "Intel", "Amazon", "Sony", "Samsung", "Microsoft", "HP", "Vencore", "AT&T", "Verizon", "Dell", "MicroTech", "Flickr"] 
var filteredInvestments = [String]() 
var resultSearchController = UISearchController() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    self.resultSearchController = UISearchController(searchResultsController: nil) 
    self.resultSearchController.searchResultsUpdater = self 
    self.resultSearchController.dimsBackgroundDuringPresentation = false 
    self.resultSearchController.searchBar.sizeToFit() 
    self.tableView.tableHeaderView = self.resultSearchController.searchBar 
    self.tableView.reloadData() 



    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = false 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
} 

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

// MARK: - Table view data source 

override func numberOfSections(in tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    if self.resultSearchController.isActive 
    { 
     return self.filteredInvestments.count 
    } 
    else { 
     return self.searchInvestments.count 

    } 

} 


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

    if self.resultSearchController.isActive 
    { 
     cell!.textLabel?.text = self.filteredInvestments[indexPath.row] 
    } 
    else { 
     cell!.textLabel?.text = self.searchInvestments[indexPath.row] 
    } 

    return cell! 

} 
func updateSearchResults(for searchController: UISearchController) { 
    self.filteredInvestments.removeAll(keepingCapacity: false) 
    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!) 
    let array = (self.filteredInvestments as NSArray).filtered(using: searchPredicate) 
    self.filteredInvestments = array as! [String] 
    self.tableView.reloadData() 



} 

}

ИТАК есть код как PickerView, так и Search. * Ошибки компиляции и приложение не запускаются. Я подключил его к iPhone 5c и умею хорошо запускать приложение.

Вот несколько иллюстраций приложения. (С незаполненных просмотров)

здесь ссылки на изображения (потому что я не имею 10 репутации) http://imgur.com/a/0Gp4P - PickerView http://imgur.com/a/JiUFe - UISearch

Большое вам спасибо, если вы в состоянии ответить это потому, что я огляделся по Сети, и большую часть времени не было никакой помощи, а те, кто помогал, оказались не в том, чтобы делать что-либо. Итак, чтобы суммировать, строки, которые я помещал в свои массивы, не отображаются ни при запуске.

Спасибо Очень много парней!

ответ

0

Для вашего UIPickerView Вы забыли функцию:

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int,  forComponent component: Int, reusing view: UIView?) -> UIView 
{ 
let pickerLabel = UILabel() //Create label 
pickerLabel.textColor = UIColor.black //Create text color 
pickerLabel.text = pickerData[row] //Make text for row the one in array 
pickerLabel.font = UIFont(name: "Helvetica-Light", size: 20) //Text font 
pickerLabel.textAlignment = NSTextAlignment.center //Alignment 
return pickerLabel 
} 

Что касается поиска, используйте аналогичную функцию, как описано выше, только без селектора просмотра будет для зрения поиска. Автозаполнение должно помочь найти его.

+0

Will Boland благодарит! Это сделало это, теперь я попробую его на UISeach –

+0

Кто-нибудь знает, какая функция такая же для поиска? потому что я не видел одного автозаполнения? –

+0

Нет проблем. Я как можно скорее напишу ответ на эту информацию. Теперь работаем над этим. –