gpt4 book ai didi

swift - 如何在 uitableviewcell 上仅在您自己发布的帖子上显示编辑按钮

转载 作者:行者123 更新时间:2023-11-30 10:04:03 24 4
gpt4 key购买 nike

我正在制作一个具有登录功能的应用程序,您可以在其中发布、编辑和删除您自己最喜欢的位置,并喜欢其他用户的帖子。

我正在尝试实现一个编辑按钮,该按钮仅显示在您自己发布的帖子上,并隐藏在其他人的帖子上。

我有我的 FeedViewController,我在其中调用 UITableviewCell 类中的“configureCell 函数”。这是 FeedViewController 中的部分代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier("PostCell") as? PostCell {
let postList = searchController.active ? searchResult[indexPath.row] : posts[indexPath.row]
let post = postList
cell.request?.cancel()

var image: UIImage?
if let url = post.postImgUrl {
image = FeedVC.imageCache.objectForKey(url) as? UIImage
}

var image2: UIImage?
if let url2 = post.userImgUrl {
image2 = FeedVC.imageCache.objectForKey(url2) as? UIImage
}

cell.configureCell(post, img: image, img2: image2)

return cell
} else {
return PostCell()
}
}

这是我的 UITableviewCell 中的代码(PostCell 类:UITableViewCell):

func configureCell(post: Post, img: UIImage?, img2: UIImage?) {
self.post = post
likeRef = DataService.ds.REF_USER_CURRENT.childByAppendingPath("likes").childByAppendingPath(post.postKey)

self.descriptionText.text = post.postDescription
self.descriptionText.scrollRangeToVisible(NSMakeRange(0, 0))
self.likesLbl.text = "\(post.likes)"
self.postTitle.text = post.postTitle
self.postLocation.text = post.postLocation
self.username.text = post.username
self.postKeyLbl.text = post.key

if post.postImgUrl != nil {
if img != nil {
self.showcaseImg.image = img
} else {
request = Alamofire.request(.GET, post.postImgUrl!).validate(contentType: ["image/*"]).response(completionHandler: { request, response, data, err in
if err == nil {
let _img = UIImage(data: data!)!
self.showcaseImg.image = img
FeedVC.imageCache.setObject(_img, forKey: self.post.postImgUrl!)
} else {
print(err.debugDescription)
}
})
}
} else {
self.showcaseImg.hidden = true
}

if post.userImgUrl != nil {
if img2 != nil {
self.profileImg.image = img2
} else {
request = Alamofire.request(.GET, post.userImgUrl!).validate(contentType: ["image/*"]).response(completionHandler: { request, response, data, err in
if err == nil {
let _img2 = UIImage(data: data!)!
self.profileImg.image = img2
FeedVC.imageCache.setObject(_img2, forKey: self.post.userImgUrl!)
} else {
print(err.debugDescription)
}
})
}
} else {
print("no image")
}

likeRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
if snapshot.value is NSNull {
self.likesImg.image = UIImage(named: "heart")
} else {
self.likesImg.image = UIImage(named: "heart-filled")
}
})

let getUid = NSUserDefaults.standardUserDefaults().valueForKey(KEY_UID)
if String(getUid!) == (self.post.postUid) {
editBtn.hidden = false
delBtn.hidden = false
}

}

这是关于最后一部分:

let getUid = NSUserDefaults.standardUserDefaults().valueForKey(KEY_UID)
if String(getUid!) == (self.post.postUid) {
editBtn.hidden = false
delBtn.hidden = false

}

那部分不起作用。编辑(和删除)按钮显示在特定用户的帖子中,但也显示在其他用户的一些帖子中。我不知道我做错了什么。也许是因为我还实现了“排序数据功能”,我可以按“日期”或“喜欢”对帖子进行排序。当帖子重新排列时,更多编辑按钮会出现在随机单元格上(来自其他用户)。

但是我真的不知道。我希望有人能够帮助我!?如果您需要更多代码,请告诉我:-) 非常感谢!

亲切的问候,迪德

最佳答案

为此添加一个 else 子句:

if String(getUid!) == (self.post.postUid) {
editBtn.hidden = false
delBtn.hidden = false
} else {
editBtn.hidden = true
delBtn.hidden = true
}

由于您正在重复使用单元格,因此某些按钮可能不会被隐藏的单元格(因为它与某个用户的帖子相关联)可能会被其他用户的另一个帖子重复使用。由于没有 else 子句来处理这种情况,因此那些“hidden”属性最初设置为 false 的按钮将保持不隐藏状态,即使 postUid 和 getUid 不匹配也是如此。希望这有帮助!

关于swift - 如何在 uitableviewcell 上仅在您自己发布的帖子上显示编辑按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37072955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com