makestagram - swift 在 table 视图中列出 post 从新到旧排序
makestagram - swift list post in table view ordered from newest to old
大家好,我正在通过 Makeschool 的 makestagram 项目练习 swift,
我想让最新的 post 出现在 table 视图的顶部
让用户第一时间看到最新的post!
有人可以帮忙吗?
这是我的代码
override func viewDidLoad() {
super.viewDidLoad()
timelineComponent = TimelineComponent(target: self)
self.tabBarController?.delegate = self
}
func takePhoto(){
// instantiate photo taking class, provide callback for when photo is selected
photoTakingHelper = PhotoTakingHelper(viewController: self.tabBarController!,callback:{ (image: UIImage?)in
let post = Post()
post.image.value = image!
post.uploadPost()
}
)
}
override func viewDidAppear(animated: Bool) {
timelineComponent.loadInitialIfRequired()
}
func loadInRange(range: Range<Int>, completionBlock: ([Post]?) -> Void) {
ParseHelper.timelineRequestForCurrentUser(range) {
(result: [PFObject]?, error: NSError?) -> Void in
if let error = error {
ErrorHandling.defaultErrorHandler(error)
}
let posts = result as? [Post] ?? []
completionBlock(posts)
}
}
}
extension TimelineViewController: UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return self.timelineComponent.content.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("PostCell")as! PostTableViewCell
let post = timelineComponent.content[indexPath.section]
post.downloadImage()
post.fetchLikes()
cell.post = post
return cell
}
}
extension TimelineViewController: UITableViewDelegate{
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
timelineComponent.targetWillDisplayEntry(indexPath.section)
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCellWithIdentifier("PostHeader")as! PostSectionHeaderView
let post = self.timelineComponent.content[section]
headerCell.post = post
return headerCell
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 40
}
}
我终于明白了!
parse 的 PFquery 在方法中得到更新
我将 createdAt 更改为 updatedAt。
现在完美运行了!
大家好,我正在通过 Makeschool 的 makestagram 项目练习 swift, 我想让最新的 post 出现在 table 视图的顶部 让用户第一时间看到最新的post!
有人可以帮忙吗? 这是我的代码
override func viewDidLoad() {
super.viewDidLoad()
timelineComponent = TimelineComponent(target: self)
self.tabBarController?.delegate = self
}
func takePhoto(){
// instantiate photo taking class, provide callback for when photo is selected
photoTakingHelper = PhotoTakingHelper(viewController: self.tabBarController!,callback:{ (image: UIImage?)in
let post = Post()
post.image.value = image!
post.uploadPost()
}
)
}
override func viewDidAppear(animated: Bool) {
timelineComponent.loadInitialIfRequired()
}
func loadInRange(range: Range<Int>, completionBlock: ([Post]?) -> Void) {
ParseHelper.timelineRequestForCurrentUser(range) {
(result: [PFObject]?, error: NSError?) -> Void in
if let error = error {
ErrorHandling.defaultErrorHandler(error)
}
let posts = result as? [Post] ?? []
completionBlock(posts)
}
}
}
extension TimelineViewController: UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return self.timelineComponent.content.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("PostCell")as! PostTableViewCell
let post = timelineComponent.content[indexPath.section]
post.downloadImage()
post.fetchLikes()
cell.post = post
return cell
}
}
extension TimelineViewController: UITableViewDelegate{
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
timelineComponent.targetWillDisplayEntry(indexPath.section)
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCellWithIdentifier("PostHeader")as! PostSectionHeaderView
let post = self.timelineComponent.content[section]
headerCell.post = post
return headerCell
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 40
}
}
我终于明白了!
parse 的 PFquery 在方法中得到更新
我将 createdAt 更改为 updatedAt。
现在完美运行了!