2017-02-02 1 views
0

Я пытаюсь создать строку поиска в моем представлении таблицы, но у меня есть ошибка при попытке написать что-нибудь в строке поиска. Ошибка (завершение действия приложения для исключения исключений «NSInternalInconsistencyException», причина: «неспособность деактивировать ячейку с идентификатором cell1 - должна зарегистрировать ниб или класс для идентификатора или подключить ячейку прототипа в раскадровке»), я делаю класс в своей ячейке и используйте его идентификатор как (cell1), но все же ту же ошибку, может ли кто-нибудь помочь мне решить эту проблему с помощью Swift 3.Ошибка в SearchBar при попытке написать что-то с помощью swift3

Cell IDCell Class

Это мой код:

import UIKit 

    class ProgrTable: UIViewController , UITableViewDataSource , UITableViewDelegate , UISearchBarDelegate { 

    @IBOutlet weak var ProgTable: UITableView! 
    @IBOutlet weak var searchBar: UISearchBar! 

var searchActive : Bool = false 
var filtered:[String] = [] 
var ProgArray = [UIImage]() 
var ProgTitle = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    searchBar.delegate = self 
    ProgTable.dataSource = self 
    ProgTable.delegate = self 

    ProgArray = [UIImage(named :"1")!,UIImage(named :"1")!,UIImage(named :"1")!,UIImage(named :"1")!,UIImage(named :"1")!,UIImage(named :"1")!,UIImage(named :"1")!,UIImage(named :"1")!] 

    ProgTitle = ["ssss ","kkkkkkk","vvvvvvv","yyyyyy","uuuuuu","eeeee","rrrrr","hhhhh","ggggg","fffff","dddd"] 

} 

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

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

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { 
    searchActive = false; 
} 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    searchActive = false; 
} 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    searchActive = false; 
} 

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

    filtered = ProgTitle.filter({ (text) -> Bool in 
     let tmp: NSString = text as NSString 
     let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive) 
     return range.location != NSNotFound 
    }) 
    if(filtered.count == 0){ 
     searchActive = false; 
    } else { 
     searchActive = true; 
    } 
    self.ProgTable.reloadData() 
} 


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

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    if(searchActive) { 
     return filtered.count 
    } 
    return ProgArray.count; 
} 


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

    if(searchActive){ 
     cell.progLable.text = filtered[indexPath.row] 
    } else { 
     cell.progLable.text = ProgTitle[indexPath.row] 
     cell.progImage.image = ProgArray[indexPath.row] 
    } 

    return cell 
} 


} 

Это мой код ячейки:

import UIKit 

класс ProgrCell: UITableViewCell {

@IBOutlet weak var progLable: UILabel! 
@IBOutlet weak var progImage: UIImageView! 
override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 
} 

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

} 
+0

. Определите идентификатор ячейки в IB как «cell1». –

+0

Не связано, но в наборе 'cellForRowAt' 'cell.progImage.image'' 'UIImage()', когда 'searchActive' является' true'. –

+0

Пожалуйста, проверьте вопрос после обновления. –

ответ

0

В StoryBoard выберите ячейку и убедитесь, что идентификатор равен cell1, и что для класса установлено значение «ProgrCell».

+0

Я уверен, что я делаю все это, но все та же ошибка. –

+0

Не могли бы вы добавить код для 'ProgrCell', и - чтобы быть абсолютно уверенным :-) вы могли бы проверить, что вы установили TableViewCell Style = Custom и Identifier = cell1 - без кавычек, запятых или капиталов? – Russell

+0

Пожалуйста, проверьте мой вопрос сейчас. –

Смежные вопросы