Я создаю приложение iOS с использованием быстрой и Xcode версии 6.3Как фильтровать содержимое UITableView, которое имеет пользовательскую ячейку с панелью поиска в Swift?
Я создал табличный вид, панель поиска в качестве выхода.
После этого я создал новый класс ProjectTableviewCell как подкласс ячейки UITableview.
В моей раскадровке я подключил несколько ярлыков к прототипу ячейки.
Я реализовал методы поиска. И его данные фильтрации в tableviewcell правильно. Это все работает нормально.
В случае, когда я просматриваю любой контент, отображается список содержимого.
После операции фильтрации он отображает только конкретную фильтрованную матрицу.
Проблема теперь, когда я сталкиваюсь, в содержимом ячейки таблицы не отображается.
Мой ожидаемый результат: я хочу показать фильтрованный массив с существующим содержимым ячейки в моем представлении таблицы.
class myProjects: UIViewController,UITableViewDataSource,UITableViewDelegate,UISearchBarDelegate {
@IBOutlet weak var projectTable: UITableView!
@IBOutlet weak var searchProject: UISearchBar!
var project = [String]()
var searchActive : Bool = false
var filtered:[String] = []
//Search Bar Methods
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 = project.filter({ (text) -> Bool in
let tmp: NSString = text
let range = tmp.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
return range.location != NSNotFound
})
if(filtered.count == 0){
searchActive = false;
} else {
searchActive = true;
}
self.projectTable.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if(searchActive) {
return filtered.count
}
return project.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let textCellIdentifier = "Cell"
let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as! projectTableViewCell
let row = indexPath.row
if(searchActive){
cell.textLabel?.text = filtered[indexPath.row]
} else {
(cell.contentView.viewWithTag(1) as! UILabel).text = project[row] as String
}
(cell.contentView.viewWithTag(3) as! UILabel).text = projectStatus[row] as String
(cell.contentView.viewWithTag(7) as! UILabel).text = ProjectDescription[row] as String
(cell.contentView.viewWithTag(12) as! UILabel).text = category[row] as String
(cell.contentView.viewWithTag(13) as! UILabel).text = subcategory[row] as String
(cell.contentView.viewWithTag(14) as! UILabel).text = project_Tags[row] as String
(cell.contentView.viewWithTag(15) as! UILabel).text = skill_Needed[row] as String
(cell.contentView.viewWithTag(16) as! UILabel).text = budget[row] as String
(cell.contentView.viewWithTag(17) as! UILabel).text = timeFrames[row] as String
(cell.contentView.viewWithTag(18) as! UILabel).text = location[row] as String
return cell
}
Я Новичок в Свифт. Ваша помощь будет очень признательна.
Рекомендуется создать класс проекта, а не количество полученных вами массивов. – iRiziya
Yaa Я понял, что сейчас я перешел на класс. –