我有一个UIButton
被用作label
,该按钮位于TableView
内,并且由我从Json
获取的数据填充。我设置它的方式是,如果一个特定的行有超过100个字符,那么只显示前100个字符,如果用户点击按钮,那么我想显示其余的数据。我的问题是,当我显示前100个字符时,我覆盖了Post-Message的其余部分,这样当用户点击Button-Post时,它仍会显示前100个字符而不是完整的消息。我的代码将清理
var Posts = [String]()
override func viewDidLoad() {
if let post = Stream["post"] as? String {
// if contains more than 100 show only 100
if post.characters.count > 100 {
let startIndex = post.index(post.startIndex, offsetBy: 100)
self.Posts.append(post.substring(to: startIndex).appending("... Read More"))
} else {
// contains less than 100 characters
print(post.characters.count)
self.Posts.append(post) }
}
}
func Post_ShowAll(sender: UIButton) {
// This is supposed to show the full message
var post_limit: String = Posts[sender.tag]
print(post_limit)
if post_limit.characters.count > 100 {
let startIndex = post_limit.index(post_limit.startIndex, offsetBy: post_limit.endIndex)
post_limit.append(post_limit.substring(to: startIndex))
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePageTVC", for: indexPath)
cell.post.setTitle(Posts[indexPath.row],for: UIControlState.normal)
cell.post.addTarget(self, action: #selector(HomePageC.Post_ShowAll(sender:)), for: .touchUpInside)
cell.post.tag = indexPath.row
return cell
}
我认为我的问题出在viewDidLoad
,如果帖子有150个字符,那么它将落在IF语句中并将其缩减为100个字符。一旦用户单击Post按钮到ShowAll方法,它仍然显示相同的100个字符,因为原始的完整数据已被覆盖。有什么方法我只能显示前100个字符并隐藏其余字符吗?