Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Cocoa 是否有一种智能方法来处理NSScrollView中的视图交换/重用?_Cocoa_Uitableview_Nstableview_Nsview_Nsscrollview - Fatal编程技术网

Cocoa 是否有一种智能方法来处理NSScrollView中的视图交换/重用?

Cocoa 是否有一种智能方法来处理NSScrollView中的视图交换/重用?,cocoa,uitableview,nstableview,nsview,nsscrollview,Cocoa,Uitableview,Nstableview,Nsview,Nsscrollview,背景: 我正在Cocoa/Objective-C中构建一个基于视图的NSTableView类控件,它提供了UITableView的易用性,可以在Interface Builder中布局视图,而不是试图将NSCell子类化。它的资源也很聪明,因为它采用了类似于UITableView的可重用单元范例。当然,这都是在NSScrollView中完成的 我已经解决了大部分棘手的视图交换问题,并且正在工作。滚动时,如果视图已完全剪裁,则会将其添加到未使用视图池中。类似地,如果未展开的视图进入可视区域,它将尝

背景:

我正在Cocoa/Objective-C中构建一个基于视图的NSTableView类控件,它提供了UITableView的易用性,可以在Interface Builder中布局视图,而不是试图将NSCell子类化。它的资源也很聪明,因为它采用了类似于UITableView的可重用单元范例。当然,这都是在NSScrollView中完成的

我已经解决了大部分棘手的视图交换问题,并且正在工作。滚动时,如果视图已完全剪裁,则会将其添加到未使用视图池中。类似地,如果未展开的视图进入可视区域,它将尝试从未使用的池中获取视图,如果没有可用的视图,它将从保存视图原型的nib创建一个新视图

类似的解决方案确实存在,但我喜欢到处修修补补,并且喜欢自己实现:)。然而,我不知道有什么解决方案可以解决这个问题,我需要一些建议

问题:

例如,假设每个视图都包含一个文本字段。如果文本字段正在编辑,并且用户开始滚动,我希望该单元格不被释放到池中,这样它就不会“失去焦点”,或者“给予焦点”到重新使用已释放视图的新显示视图。是否有一种智能方法可以将视图标记为正在编辑,而不需要创建自定义视图的程序员截取事件并将其标记为正在编辑


谢谢你的帮助

您的视图控制器可能符合非正式协议。它的设计正好解决了这个问题。

谢谢,应该可以,而且看起来是一种干净的方式!这是一个可怕的问题。请考虑把教程或甚至一些代码当你已经全部解决,因为我可以想象这是一个非常有用的东西,很多人!