テーブルビューに表示されるアイテムはすでにいくつかあります。検索バーを使用して検索を行うと、同じテーブルビューが新しいアイテムで更新されます(今日の私のプロジェクト)。
しかし、検索バーに書いたものを消去した場合は、以前のアイテムに戻る必要があります。どうやってやるの ?
import UIKit
import Alamofire
class MovieViewController: UIViewController, AsyncUpdateProtocol,UISearchBarDelegate, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var myTable: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var myArray: Array<Movie>!
var movieData: MovieData!
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
self.myTable.dataSource = self
self.movieData = MovieData(controllerUpdate: self)
self.myArray = self.movieData.data
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.movieData.data.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: AnyObject = self.myTable.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
cell.textLabel!!.text = self.movieData.data[indexPath.row].title
cell.textLabel!!.adjustsFontSizeToFitWidth = true
var url: NSURL
if((self.movieData.data[indexPath.row].poster ) != nil){
url = NSURL(string: "http://image.tmdb.org/t/p/w500\(self.movieData.data[indexPath.row].poster)") as NSURL!
}else{
url = NSURL(string: "http://developer-agent.com/wp-content/uploads/2015/05/images_no_image_jpg3.jpg") as NSURL!
}
var data = NSData(contentsOfURL: url) as NSData!
var imagem = UIImage(data: data!)
cell.imageView!!.image = imagem
return cell as! UITableViewCell
}
func searchBarSearchButtonClicked(searchBar: UISearchBar){
pesquisa(searchBar.text)
searchBar.resignFirstResponder()
}
func pesquisa(nome: String){
self.movieData.data.removeAll()
self.movieData.request(nome)
}
textDidChangeにUISearchBarデリゲートメソッドを使用し、nilを確認する必要があります。nilの場合は、ビューが読み込まれたようにデータを読み込むことができます。つまり、次のようになります。
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
if searchText.isEmpty == true {
self.movieData = MovieData(controllerUpdate: self)
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加