0
Reddit와 같은 사용자가 "득표"하여 게시물을 정렬하는 응용 프로그램을 만들려고합니다.사용자 지정 UITableViewCells 정렬 (Swift 2, Xcode 7)
게시물에있는 "투표"(Int 값)의 수로 셀을 정렬하는 방법을 알아 내려고 노력하고 있습니다.
게시물이 표시되는보기 컨트롤러에서 나는 이것이 대부분 관련 있다고 생각합니다. 나는 또한 여기에 놀이에있는보기에 검색 막대를 가지고있어.
아래 코드를 실행하면 아무 것도 내 View Controller에 표시되지 않습니다. 이미 문제가 세포 정렬 된 함수가 호출되지 않았 음을 깨달았다로
은 어떤 도움이 많이
import UIKit
import Firebase
class FeedVC: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchBar: UISearchBar!
var ref: FIRDatabaseReference!
var posts = [Post]()
static var imageCache = NSCache()
var inSearchMode = false
var filteredVenues = [Post]()
var sortByVotes = [Post]()
private var _post: Post?
var post: Post? {
return _post
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
searchBar.delegate = self
searchBar.returnKeyType = UIReturnKeyType.Done
tableView.estimatedRowHeight = 368
ref = FIRDatabase.database().reference()
DataService.ds.REF_POSTS.observeEventType(.Value, withBlock: { snapshot in
print(snapshot.value)
self.sortByVotes = []
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
print("SNAP: \(snap)")
if let postDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let post = Post(postKey: key, dictionary: postDict)
self.sortByVotes.append(post)
}
}
}
self.tableView.reloadData()
})
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if inSearchMode {
return filteredVenues.count
}
return sortByVotes.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//let post = posts[indexPath.row]
if let cell = tableView.dequeueReusableCellWithIdentifier("PostCell") as? PostCell {
cell.request?.cancel()
var img: UIImage?
let post: Post!
posts = posts.sort{$0.votes > ($1.votes)} // added this*****
if inSearchMode {
post = filteredVenues[indexPath.row]
} else {
post = sortByVotes[indexPath.row]
}
if let url = post.imageUrl {
img = FeedVC.imageCache.objectForKey(url) as? UIImage
}
cell.configureCell(post, img: img)
return cell
} else {
return PostCell()
}
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let post = sortByVotes[indexPath.row]
if post.imageUrl == nil {
return 200
} else {
return tableView.estimatedRowHeight
}
}
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
view.endEditing(true)
}
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
if searchBar.text == nil || searchBar.text == "" {
inSearchMode = false
view.endEditing(true)
posts = posts.sort{$0.votes > ($1.votes)} //added this ***
tableView.reloadData()
} else {
inSearchMode = true
let lower = searchBar.text!.lowercaseString
filteredVenues = sortByVotes.filter({$0.venueName!.rangeOfString(lower) != nil})
tableView.reloadData()
}
}
func sortPosts(){ //removed this function******
sortByVotes = posts.sort { $0.votes > ($1.votes)}
tableView.reloadData()
}
}
가 (당신이'FUNC의 sortPosts를 호출)를' 어딘가에? –
안녕하세요 빅터, 나는 그 기능을 제거하고'textDidChange' 함수와'cellForRowAtIndexPath' 함수에'posts = posts.sort {$ 0.votes> ($ 1.votes)}'를 추가했습니다. 위를보십시오 – ryanbilak
하지만 지금은 작동하고 있습니다 ? –