Усложнение панели поиска Swift Ios Parse

Недавно я следил за учебным пособием, в котором показано, как ранняя версия Swift использовалась для создания таблицы пользователей из Parse с функцией поиска. Следующий код позволил мне отобразить всех пользователей в таблице так, как я хотел бы, но не обновляет таблицу после того, как текст поиска был помещен в строку поиска. (Есть два пользовательских массива, потому что я относительно новичок в программировании и использовал два разных руководства, чтобы помочь создать эту таблицу). Любая помощь приветствуется!

var userArray: [String] = []
var userList:NSMutableArray = NSMutableArray()
@IBOutlet weak var searchBar: UISearchBar! = UISearchBar()


func loadUsers(name:String){
    var findUsers:PFQuery = PFUser.query()
    if !name.isEmpty {
        findUsers.whereKey("name", containsString: name)
    }
    findUsers.findObjectsInBackgroundWithBlock{
        (objects:[AnyObject]!, error:NSError!) -> Void in
            self.userList = NSMutableArray(array: objects)
            self.tableView.reloadData()
    }
}

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
    loadUsers(searchText)
}

func searchBarCancelButtonClicked(searchBar: UISearchBar) {
    loadUsers("")
}

override func viewDidLoad() {
    super.viewDidLoad()

    loadUsers("")
    searchBar.delegate = self
    self.navigationItem.hidesBackButton = true

    var query = PFUser.query()
    query.whereKey("username", notEqualTo: PFUser.currentUser().username)
    var users = query.findObjects()

    for user in users {
        userArray.append(user["name"] as String)
        println(userArray)
    }
}

// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    return userArray.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
       var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

     if userArray.count >= 1 {
       cell.textLabel?.text = userArray[indexPath.row]
     }

    return cell
}

person Sammmmm    schedule 22.01.2015    source источник


Ответы (1)


Вам нужно будет создать новый массив, содержащий данные, содержащие результаты в searchBar.

Кроме того, лучше создать логическую переменную для обработки данных, отображаемых на экране (true для результатов поиска, false для loadUsers).

Эта статья может вам помочь: http://shrikar.com/blog/2015/02/16/swift-ios-tutorial-uisearchbar-and-uisearchbardelegate

person Rennan    schedule 23.02.2015
comment
Спасибо, я смог следовать этому руководству и решить свою проблему! - person Sammmmm; 26.02.2015