2015-01-22 1 views
0

나는 최근에 검색 기능과 구문 분석에서 사용자의 테이블을 생성하는 데 사용되는 스위프트의 초기 버전을 보여주는 자습서를 다음했다. 다음 코드는 내가 원했던 것처럼 테이블에 모든 사용자를 표시 할 수있게했지만 일단 검색 텍스트가 검색 창에 입력되면 테이블을 업데이트하지 않습니다. 프로그래밍에 비교적 익숙하지 않았고이 테이블을 만드는 데 도움이되는 두 개의 다른 자습서를 따르기 때문에 두 개의 사용자 배열이 있습니다. 어떤 도움이라도 대단히 감사합니다 !!스위프트이 있는데 구문 분석 SearchBar에 합병증이

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 
} 

답변

0

검색 막대의 결과를 보유하는 데이터를 보유하는 새로운 배열을 만들어야합니다.

게다가 bool 변수를 만들어 화면에 표시되는 데이터를 처리하는 것이 좋습니다 (검색 결과에는 true이고 loadUsers에는 false).

이 기사는 당신을 도울 수 있습니다 : http://shrikar.com/blog/2015/02/16/swift-ios-tutorial-uisearchbar-and-uisearchbardelegate

+0

내가이 튜토리얼을 따라 내 문제를 해결할 수 있었다 주셔서 감사합니다! – Sammmmm