بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
سوال درمورد نحوه اضافه کردن جستجو به لیست در پروژه نوت
سلام استاد
در اینترنت سرچ کردم و آموزش های زیادی رو نگاه کردم ولی موفق نشدم این کارو انجام بدم.
در اکثر آموزش ها بجای ViewController از TableViewController استفاده میکنند تا کدهای کمتری برای اضافه کردن جستجو استفاده کنند. و با استفاده از کدهای اون مثالها به ارور های مختلف برخورد کردم و متوقف شدم.
یک مشکل دیگه اینکه در همه این آموزش ها اطلاعات لیست، از یک آرایه ساده از استرینگ ها گرفته میشد که با پروژه ما متفاوت بود و متوجه نشدم در همچین موقعیت باید چکار کنم.
پیشاپیش از پاسخ های ارزشمند شما بسیار سپاسگذارم.
(هدف من از جستجو فیلتر کردن لیست بر اساس کلمه جستجو شده هست. نه هنگام دریافت اطلاعات توسط php)
یک نمونه از کدهای این آموزش هارو اینجا قرار میدم.
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate{
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var tableView: UITableView!
var searchActive : Bool = false
var data = ["San Francisco","New York","San Jose","Chicago","Los Angeles","Austin","Seattle"]
var filtered:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
/* Setup delegates */
tableView.delegate = self
tableView.dataSource = self
searchBar.delegate = self
}
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 = data.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.tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if(searchActive) {
return filtered.count
}
return data.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell;
if(searchActive){
cell.textLabel?.text = filtered[indexPath.row]
} else {
cell.textLabel?.text = data[indexPath.row];
}
return cell;
}
}
+2
0
برای سرچ کردن شما یک آرایه مثل آرایه هایی که در آموزش ها گفته شده میسازید و بعد در آرایه اصلی با استفاده از یک for بر روی داده مورد نظر جستجو میکنید ، هر آیتمی که کلید search با آن منطبق بود را داخل آرایه جدید قرار میدهید و در آخر آرایه جدید را نمایش داده میشود . (10 سال پیش)
برای این سوال پاسخی وجود ندارد.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .