Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在UITableViewCell中具有可编辑的多行UITextView_Iphone_Objective C_Uitableview - Fatal编程技术网

Iphone 如何在UITableViewCell中具有可编辑的多行UITextView

Iphone 如何在UITableViewCell中具有可编辑的多行UITextView,iphone,objective-c,uitableview,Iphone,Objective C,Uitableview,在UITableViewCell子类中有一个UITextView。获取文本视图和单元格的新高度没有问题。我遇到的问题是告诉UITableView更新 我已经实现了heightforrowatinexpath:以在文本视图展开时返回单元格的活动高度 但在某处,“[tableView开始更新];[tableView EndUpdate];必须打电话 怎么做?我是否应该向设置为UITableViewController子类的UITableViewCell添加委托属性?然后在单元格扩展高度且Tablev

在UITableViewCell子类中有一个UITextView。获取文本视图和单元格的新高度没有问题。我遇到的问题是告诉UITableView更新

我已经实现了
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单元格,我必须复制并粘贴代码,而不是将其仅放在单元格子类中的一个位置您可以使用相同的思路,而不是将视图子类化,子类化控制器,以便将其保持在一个位置。。。。