- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
更新了下面的代码
我正在处理限制为 100 个字符的评论单元格,如果它们包含更多字符,则会显示“显示更多按钮”。
如果按下,确切的单元格应重新加载自身,行数更改为 0 并完全显示该单元格,无论它有多大。
我所取得的成就是重新加载单元格,但不会重新加载选定的单元格,这有点随意。
下面是我的放大过程代码
注意:为我的函数更新代码
问题:我必须按两次按钮才能得到结果,最小化和最大化单元格
@IBAction func readMore(_ sender: UIButton) {
self.state = !self.state
print("state" , state)
self.tapMore.setTitle(self.state ? self.decreaseState: self.expandState, for: .normal)
self.commentLabel.numberOfLines = (self.state ? self.expandedLines: self.numberOfLines)
print(self.commentLabel.numberOfLines)
let myIndexPath = IndexPath(row: sender.tag, section: 0)
UIView.animate(withDuration: 0.3, animations: {
self.parentViewControllerCommentCell?.tableView.reloadRows(at: [myIndexPath], with: UITableViewRowAnimation(rawValue: Int(UITableViewAutomaticDimension))!)
})
}
索引来自
extension CommentTableViewCell {
var indexPath: IndexPath? {
return (superview as? UITableView)?.indexPath(for: self)
}
}
注意
print 语句打印出所选单元格(例如 [0, 1] 或 [0,0] 但它不会改变。
而我硬编码我的代码并更改 let myIndexPath = IndexPath(row: indexPath!.row, section: 0)
到 让 myIndexPath = IndexPath(行: 0, 部分: 0)
该功能有效,但会任意重新加载一些单元格并任意放大和缩小单元格。
在带有 row: indexPath!.row 的变量版本中,行状态也没有改变,而硬编码的行在 3 和 0 之间变化。
感谢您的帮助:)
添加
我的评论单元格
class CommentTableViewCell: UITableViewCell {
@IBOutlet weak var likeCountButton: UIButton!
@IBOutlet weak var profileImageView: UIImageView!
@IBOutlet weak var commentLabel: KILabel!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var timeLabel: UILabel!
@IBOutlet weak var likeImageView: UIImageView!
@IBOutlet weak var tapMore: UIButton!
@IBOutlet weak var tapMoreButton: UIButton!
var delegate: CommentTableViewCellDelegate?
var postId : String!
最佳答案
这是让您获得正确索引路径的更好方法。首先,在您的 cellForRow
方法中,将当前索引行作为标记添加到您的显示更多按钮,然后将点击操作添加到您的按钮处理函数。
在您自定义的 UITableViewCell
类中添加一个 UIButton
的导出
class CustomCell: UITableViewCell {
@IBOutlet var moreButton: UIButton! // Connect your button from storyboard
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! CustomCell
cell.moreButton.tag = indexPath.row
/* Just add action normally from storyboard. No need to add target. cell.moreButton.addTarget(self, action:#selector(buttonUp(sender:)), for: .touchUpInside) */
return cell
}
然后在你的处理函数中,你可以通过读取这个标签来获取正确的索引路径
func tapForMore(sender: UIButton) {
let myIndexPath = IndexPath(row: sender.tag, section: 0)
print("myindex", myIndexPath)
//... other code here
}
关于swift - 在 selectedIndex 展开单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44845247/
我在尝试这段代码时遇到了上述错误。我试着给 just my code但没有用。 (这是默认的) Here is my XML file 错误在 cmbProduct_SelectedIndexChan
我遇到了一个问题,即我的组合框在关闭 UserControl 时丢失了其 SelectedIndex 值。 ViewModel 仍然有它,但 View 不断将它重置为 -1。我了解绑定(bind) I
我一直收到这个错误: System.NullReferenceException was unhandled by user code Message=[Arg_NullReferenceExce
我有一个 HTML 选择下拉列表,其中提供了多个: Apple Orange Pineapple Banana 并分配一个单击处理程序,该处理程序返回当前单击的元素的索引: doc
如果没有选择任何内容,是否有可能让 selectedIndex 返回 -1,而不是位置 0 处的元素文本。 即使没有选择任何内容,selectedIndex 也会返回 0。 11 2
向代码杂耍者致敬! 我正在处理一个有点令人沮丧的问题,我似乎无法 100% 解决它,我希望它能正常工作。 我有一个选择字段,其中包含各种动态选项数量(可能不止一个“中间”,例如“中间 1”、“中间 2
是否可以内联使用 selectedIndex 属性而不是将其放在 javascript 标记中? 如果我有一个内联的 onChange,例如: ^这不起作用,但更多的是我正在寻找的例子。这种用法可能
{{spot}} setPlace(seat) { this.selectedIndex = seat; } 我有二维数组,我想将类添加到所选
如何设置以显示文本为引用的select元素的selectedIndex? 例子: Chicken Crocodile Monkey function Sele
我有一个带有显示数据的组合框的 WPF 用户控件 (FileSelectionView.xaml)。我的 WPF 看起来像: 在我的 View 模型文件 (FileSelectionViewMode
我有我想做的独特行为。 我有一个组合框,它数据绑定(bind)到 View 模型项列表。第一项是“[选择项目]”。预期的行为是,当用户选择一个项目时,我会做一些事情,然后将索引重置回第一个项目。 这有
Command 参数如何绑定(bind)到 ListBox 中的选定索引?我的代码:
我有一个比较经典的UI情况-两个名为SelectedItems和AvailableItems的列表框-想法是您已经选择的项目位于SelectedItems中,而可用于添加到SelectedItems的
我正在尝试将下拉选项的默认选择设置为空白。 如果我用 HTML 生成一个选择下拉列表,它就可以工作。但是,当我使用 JavaScript 生成相同的下拉列表时,它不起作用。 请参阅 http://js
我的函数SelectBeatle检查input#FindBeatle并将select#Beatles的selectedIndex设置为值输入#FindBeatle 然而,由于某些奇怪的原因,我的循环似
我使用 Symfony Twig 模板在我的输入中有一个标签列表: {% for skill in skills %} {{skill.label}} {%
我有一个问题,不知道如何解决,在 Excel VBA 中,我有这段代码可以带我浏览网站 ( https://indexcalculator.ftserussell.com/ ),但是在网站的第 3 步
很难理解这个概念。如果您单击 WPF DataGrid 上的一行,它会使用 SystemColors.HighlightBrushKey 着色并具有“焦点”。 如果您选择另一个控件,该行不再有 Sys
我在“UITabBarController.selectedIndex”上发生崩溃。令人惊讶的是,选项卡栏在执行的任何时候都不会为零,并且在该特定行上仍然会出现错误。请指导我找到正确的解决方案。
$.fn.fillSelect = function (data) { return this.clearSelect().each(function () { if (thi
我是一名优秀的程序员,十分优秀!