因此,当标签文字发生变化时,我在更新01010101
10101010
00001111
的高度方面遇到了问题。
我不善于解释事情,因此我在Github创建了一个回购,以便您可以抓住并运行。当您向上和向下滚动表格视图时(以使单元格重复使用),该问题应该会出现。
我做的是:
UITableViewCell
。UILabel
在视图模型中注册更改,并相应地更新RxSwift
的文本。 UITable
)重新计算其高度。UITableViewController
和tableView.beginUpdates
来更新单元格的高度。结果:
我尝试了什么:
tableView.endUpdates
。 - >无限循环tableView.reloadData()
- >这有效,但我不知道为什么。我想要实现的目标:
一些代码段:(虽然最好还是检查一下这个回购。):
单元格注册视图模型
tableView.reloadRows()
在UITableViewController中委派方法
override func awakeFromNib() {
super.awakeFromNib()
viewModel.title
.observeOn(MainScheduler.instance)
.subscribe(onNext: { [weak self] title in
guard let cell = self else { return }
cell.label.text = title
cell.delegate?.requestSizeRecalculate(cell: cell)
})
.disposed(by: disposeBag)
}
这是我第一次在Stackoverflow上提问。我知道我可能会让事情变得更加复杂。但如果有人可以根据您的经验提出任何建议,我将非常感激!
答案 0 :(得分:1)
你可以这样做:
int removeVowels(char arr[]) {
char *temp = malloc(strlen(arr) + 1);
int i;
int total = 0;
int pos = 0;
for ( i = 0; arr[i] != '\0'; i++) {
if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'o' || arr[i] == 'i' || arr[i] == 'u')
total++;
else
temp[pos++] = arr[i];
}
temp[pos] = '\0';
strcpy(arr, temp);
free(temp);
return total;
}
答案 1 :(得分:-1)
我见过你的代码。现在你不需要计算行的高度。当你给出top,leading,bottom和Trailing约束时。 Xcode将根据标签高度计算标签高度并增加单元尺寸。你需要传递一个方法。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return UITableViewAutomaticDimension
}
你已经完成了所有事情。你需要写上面的方法。现在不要求这种方法。
extension ViewController: SimpleCellDelegate {
func requestSizeRecalculate(cell: SimpleCell) {
print("Size recalculating....")
我已在此链接上上传了您的项目并进行了更改。在数组中添加了1个大文本来测试自我调整大小。
这是Out的截图: -
我希望这个答案对你有所帮助。