Iphone 如何在UITableViewCell中具有可编辑的多行UITextView
在UITableViewCell子类中有一个UITextView。获取文本视图和单元格的新高度没有问题。我遇到的问题是告诉UITableView更新 我已经实现了Iphone 如何在UITableViewCell中具有可编辑的多行UITextView,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,在UITableViewCell子类中有一个UITextView。获取文本视图和单元格的新高度没有问题。我遇到的问题是告诉UITableView更新 我已经实现了heightforrowatinexpath:以在文本视图展开时返回单元格的活动高度 但在某处,“[tableView开始更新];[tableView EndUpdate];必须打电话 怎么做?我是否应该向设置为UITableViewController子类的UITableViewCell添加委托属性?然后在单元格扩展高度且Tablev
heightforrowatinexpath:
以在文本视图展开时返回单元格的活动高度
但在某处,“[tableView开始更新];[tableView EndUpdate];必须打电话
怎么做?我是否应该向设置为UITableViewController子类的UITableViewCell添加委托属性?然后在单元格扩展高度且Tableview需要更新时发送代理消息?在UITableViewCell和控制器之间有一个委托似乎有点奇怪
我尝试使用NSNotificationCenter,但我有不止一个可编辑的单元格,而且不止一个具有这种性质的tableview。因此,如果不重新复制和粘贴同一行,就无法仅注册单元格的通知,这不好(因为单元格是在IB中创建的,并且不在数组或集合中),并且具有多个表视图意味着在另一个表视图上发生异常,因为它被告知要更新,但没有任何更改
我已经看到了很多关于这个主题的问题和答案,但是当涉及到更新tableview时,他们都说“现在更新tableview”,而不是如何更新。那么,我如何告诉tableview从它的一个单元格中进行更新呢?我认为这种行为最好在
UITableViewController
中实现,而不是在视图本身(即UITableViewCell
)中实现
您的控制器负责设置单元格高度,通常是UITextView
的代理,所以让它来处理所有这些
在textViewDidChange
方法中,计算出单元格的新高度,更新数据结构以反映该高度,然后调用reloadRowsAtIndexPaths:withRowAnimation:
使其实际发生更改
编辑:因此,既然您不喜欢我的第一个建议,另一种方法是在自定义
UITableViewCell
中添加recommendedRowHeight
属性
然后,您可以从UITableViewController
观察此属性,或者使用以下方法实现委托协议:
- (void)recommendedRowHeightDidChange
// or
- (void)recommendedRowHeightDidChangeTo:(CGFloat)newHeight
然后,当您的身高发生变化时,更新您的recommendedRowHeight
属性,并在您选择该路线时调用您的代理方法
无论哪种方式,一旦控制器发现单元格的建议行高已更改,它就可以执行它应该执行的操作。更新反映当前行高度的数据结构,然后调用
reloadRowsAtIndexPaths:withRowAnimation:
我认为最好在UITableViewController
中实现此行为,而不是在视图本身中(在UITableViewCell
中)
您的控制器负责设置单元格高度,通常是UITextView
的代理,所以让它来处理所有这些
在textViewDidChange
方法中,计算出单元格的新高度,更新数据结构以反映该高度,然后调用reloadRowsAtIndexPaths:withRowAnimation:
使其实际发生更改
编辑:因此,既然您不喜欢我的第一个建议,另一种方法是在自定义
UITableViewCell
中添加recommendedRowHeight
属性
然后,您可以从UITableViewController
观察此属性,或者使用以下方法实现委托协议:
- (void)recommendedRowHeightDidChange
// or
- (void)recommendedRowHeightDidChangeTo:(CGFloat)newHeight
然后,当您的身高发生变化时,更新您的recommendedRowHeight
属性,并在您选择该路线时调用您的代理方法
无论哪种方式,一旦控制器发现单元格的建议行高已更改,它就可以执行它应该执行的操作。更新反映当前行高度的数据结构,然后调用
reloadRowsAtIndexPaths:withRowAnimation:
您可以将tableview控制器对象添加为tableview单元格类的弱引用。在tableview控制器中,您可以有一个将从tableview单元格类调用的方法。您可以将tableview控制器对象添加为对tableview单元格类的弱引用。在tableview控制器中,您可以有一个从tableview单元格类调用的方法。但这意味着如果我想在不同的表视图中重用te单元格,我必须复制并粘贴代码,而不是将其仅放在单元格子类中的一个位置您可以使用相同的思路,而不是将视图子类化,子类化控制器以使其保持在一个位置…但这意味着如果我想在不同的表视图中重用te单元格,我必须复制并粘贴代码,而不是将其仅放在单元格子类中的一个位置您可以使用相同的思路,而不是将视图子类化,子类化控制器,以便将其保持在一个位置。。。。